#!/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!"