Files
proxmox/scripts/prune-scripts-execute.sh

124 lines
4.2 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
# Execute script pruning - move obsolete scripts to archive
# Usage: ./scripts/prune-scripts-execute.sh [--dry-run]
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
DRY_RUN="${1:---dry-run}"
# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
log_success() { echo -e "${GREEN}[✓]${NC} $1"; }
log_warn() { echo -e "${YELLOW}[⚠]${NC} $1"; }
log_error() { echo -e "${RED}[✗]${NC} $1"; }
ARCHIVE_DIR="$PROJECT_ROOT/scripts/archive"
mkdir -p "$ARCHIVE_DIR"/{deprecated,backups,test,duplicates,experimental}
# Test scripts - move to archive/test
log_info "Identifying test scripts..."
TEST_SCRIPTS=$(find "$PROJECT_ROOT/scripts" -name "*test*.sh" -type f ! -path "*/node_modules/*" ! -path "*/.git/*" ! -path "*/archive/*" | grep -v "test-all\|test-suite\|integration-test" || true)
# Backup/old scripts - move to archive/backups
log_info "Identifying backup/old scripts..."
BACKUP_SCRIPTS=$(find "$PROJECT_ROOT/scripts" -type f ! -path "*/node_modules/*" ! -path "*/.git/*" ! -path "*/archive/*" \( -iname "*backup*.sh" -o -iname "*old*.sh" -o -iname "*temp*.sh" -o -iname "*deprecated*.sh" \) || true)
# Small scripts (< 10 lines) - review
log_info "Identifying small scripts..."
SMALL_SCRIPTS=$(find "$PROJECT_ROOT/scripts" -name "*.sh" -type f ! -path "*/node_modules/*" ! -path "*/.git/*" ! -path "*/archive/*" -exec sh -c 'file="$1"; lines=$(wc -l < "$file" 2>/dev/null || echo 0); if [ "$lines" -lt 10 ] && [ "$lines" -gt 0 ]; then echo "$file"; fi' _ {} \; || true)
# Count candidates
TEST_COUNT=$(echo "$TEST_SCRIPTS" | grep -c . || echo 0)
BACKUP_COUNT=$(echo "$BACKUP_SCRIPTS" | grep -c . || echo 0)
SMALL_COUNT=$(echo "$SMALL_SCRIPTS" | grep -c . || echo 0)
log_info "Found candidates:"
echo " - Test scripts: $TEST_COUNT"
echo " - Backup/old scripts: $BACKUP_COUNT"
echo " - Small scripts: $SMALL_COUNT"
echo " - Total: $((TEST_COUNT + BACKUP_COUNT + SMALL_COUNT))"
echo ""
if [[ "$DRY_RUN" != "--execute" ]]; then
log_warn "DRY RUN MODE - No files will be moved"
log_info "Use --execute to actually move files"
echo ""
log_info "Test scripts to archive:"
echo "$TEST_SCRIPTS" | head -10 | while read -r script; do
echo " → archive/test/$(basename "$script")"
done
if [ "$TEST_COUNT" -gt 10 ]; then
echo " ... and $((TEST_COUNT - 10)) more"
fi
echo ""
log_info "Backup/old scripts to archive:"
echo "$BACKUP_SCRIPTS" | head -10 | while read -r script; do
echo " → archive/backups/$(basename "$script")"
done
if [ "$BACKUP_COUNT" -gt 10 ]; then
echo " ... and $((BACKUP_COUNT - 10)) more"
fi
echo ""
log_info "Small scripts to review:"
echo "$SMALL_SCRIPTS" | while read -r script; do
lines=$(wc -l < "$script" 2>/dev/null || echo 0)
echo "$script ($lines lines) - REVIEW"
done
echo ""
log_warn "Run with --execute to move files"
exit 0
fi
# Execute moves
log_info "Moving scripts to archive..."
moved=0
failed=0
# Move test scripts
if [ "$TEST_COUNT" -gt 0 ]; then
echo "$TEST_SCRIPTS" | while read -r script; do
if [ -f "$script" ]; then
dest="$ARCHIVE_DIR/test/$(basename "$script")"
if mv "$script" "$dest" 2>/dev/null; then
log_success "Moved: $(basename "$script")"
moved=$((moved + 1))
else
log_error "Failed: $(basename "$script")"
failed=$((failed + 1))
fi
fi
done
fi
# Move backup/old scripts
if [ "$BACKUP_COUNT" -gt 0 ]; then
echo "$BACKUP_SCRIPTS" | while read -r script; do
if [ -f "$script" ]; then
dest="$ARCHIVE_DIR/backups/$(basename "$script")"
if mv "$script" "$dest" 2>/dev/null; then
log_success "Moved: $(basename "$script")"
moved=$((moved + 1))
else
log_error "Failed: $(basename "$script")"
failed=$((failed + 1))
fi
fi
done
fi
log_success "Pruning complete!"
echo " Moved: $moved"
echo " Failed: $failed"