89 lines
2.5 KiB
Bash
89 lines
2.5 KiB
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
# Analyze small scripts (< 50 lines) for merging into utility modules
|
||
|
|
# Usage: ./scripts/analyze-small-scripts.sh
|
||
|
|
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||
|
|
source "$SCRIPT_DIR/lib/logging.sh" 2>/dev/null || true
|
||
|
|
|
||
|
|
MAX_LINES=50
|
||
|
|
|
||
|
|
log_header "Analyzing Small Scripts (< $MAX_LINES lines)"
|
||
|
|
|
||
|
|
# Find all small scripts
|
||
|
|
SMALL_SCRIPTS=$(find "$PROJECT_ROOT/scripts" -name "*.sh" -type f ! -path "*/archive/*" ! -path "*/lib/*" ! -path "*/node_modules/*" ! -path "*/.git/*" -exec sh -c 'lines=$(wc -l < "$1"); [ "$lines" -lt '"$MAX_LINES"' ] && echo "$1"' _ {} \;)
|
||
|
|
|
||
|
|
# Categorize by functionality
|
||
|
|
CONTAINER_SCRIPTS=()
|
||
|
|
NETWORK_SCRIPTS=()
|
||
|
|
SERVICE_SCRIPTS=()
|
||
|
|
CONFIG_SCRIPTS=()
|
||
|
|
PROXMOX_SCRIPTS=()
|
||
|
|
OTHER_SCRIPTS=()
|
||
|
|
|
||
|
|
categorize_script() {
|
||
|
|
local script="$1"
|
||
|
|
local basename_script=$(basename "$script")
|
||
|
|
|
||
|
|
case "$basename_script" in
|
||
|
|
*container*|*ct*|*vmid*)
|
||
|
|
CONTAINER_SCRIPTS+=("$script")
|
||
|
|
;;
|
||
|
|
*network*|*ip*|*dns*|*tunnel*)
|
||
|
|
NETWORK_SCRIPTS+=("$script")
|
||
|
|
;;
|
||
|
|
*service*|*systemd*|*postgres*|*redis*|*nginx*)
|
||
|
|
SERVICE_SCRIPTS+=("$script")
|
||
|
|
;;
|
||
|
|
*config*|*configure*)
|
||
|
|
CONFIG_SCRIPTS+=("$script")
|
||
|
|
;;
|
||
|
|
*proxmox*|*pve*|*qm*|*pct*)
|
||
|
|
PROXMOX_SCRIPTS+=("$script")
|
||
|
|
;;
|
||
|
|
*)
|
||
|
|
OTHER_SCRIPTS+=("$script")
|
||
|
|
;;
|
||
|
|
esac
|
||
|
|
}
|
||
|
|
|
||
|
|
# Process all small scripts
|
||
|
|
TOTAL=0
|
||
|
|
while IFS= read -r script; do
|
||
|
|
if [ -n "$script" ]; then
|
||
|
|
categorize_script "$script"
|
||
|
|
TOTAL=$((TOTAL + 1))
|
||
|
|
fi
|
||
|
|
done <<< "$SMALL_SCRIPTS"
|
||
|
|
|
||
|
|
# Report findings
|
||
|
|
log_info "Total small scripts found: $TOTAL"
|
||
|
|
echo ""
|
||
|
|
log_info "Categorized by functionality:"
|
||
|
|
echo " Container scripts: ${#CONTAINER_SCRIPTS[@]}"
|
||
|
|
echo " Network scripts: ${#NETWORK_SCRIPTS[@]}"
|
||
|
|
echo " Service scripts: ${#SERVICE_SCRIPTS[@]}"
|
||
|
|
echo " Config scripts: ${#CONFIG_SCRIPTS[@]}"
|
||
|
|
echo " Proxmox scripts: ${#PROXMOX_SCRIPTS[@]}"
|
||
|
|
echo " Other scripts: ${#OTHER_SCRIPTS[@]}"
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Show examples
|
||
|
|
if [ ${#CONTAINER_SCRIPTS[@]} -gt 0 ]; then
|
||
|
|
log_info "Container script examples:"
|
||
|
|
printf '%s\n' "${CONTAINER_SCRIPTS[@]}" | head -5 | while read -r s; do
|
||
|
|
echo " - $(basename "$s")"
|
||
|
|
done
|
||
|
|
fi
|
||
|
|
|
||
|
|
if [ ${#NETWORK_SCRIPTS[@]} -gt 0 ]; then
|
||
|
|
log_info "Network script examples:"
|
||
|
|
printf '%s\n' "${NETWORK_SCRIPTS[@]}" | head -5 | while read -r s; do
|
||
|
|
echo " - $(basename "$s")"
|
||
|
|
done
|
||
|
|
fi
|
||
|
|
|
||
|
|
log_success "Analysis complete!"
|