124 lines
4.2 KiB
Bash
124 lines
4.2 KiB
Bash
|
|
#!/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"
|