agent/codex/code/scripts/cleanup.sh
Snider 466fe9f5a6 feat(codex): mirror claude plugins and ethics modal
Summary:\n- added Codex marketplace registry plus awareness/ethics/guardrails sub-plugins\n- mirrored Claude plugin commands/scripts/hooks into codex api/ci/code/collect/coolify/core/issue/perf/qa/review/verify\n- embedded Axioms of Life ethics modal, guardrails, and kernel files under codex/ethics\n- added Codex parity report, improvements list, and MCP integration plan\n- extended Gemini MCP tools and docs for Codex awareness
2026-02-05 20:13:01 +00:00

135 lines
2.8 KiB
Bash
Executable file

#!/bin/bash
# Default options
CLEAN_DEPS=false
CLEAN_CACHE_ONLY=false
DRY_RUN=false
# Parse arguments
for arg in "$@"
do
case $arg in
--deps)
CLEAN_DEPS=true
shift
;;
--cache)
CLEAN_CACHE_ONLY=true
shift
;;
--dry-run)
DRY_RUN=true
shift
;;
esac
done
# --- Configuration ---
CACHE_PATHS=(
"storage/framework/cache/*"
"bootstrap/cache/*"
".phpunit.cache"
)
BUILD_PATHS=(
"public/build/*"
"public/hot"
)
DEP_PATHS=(
"vendor"
"node_modules"
)
# --- Logic ---
total_freed=0
delete_path() {
local path_pattern=$1
local size_bytes=0
local size_human=""
# Use a subshell to avoid affecting the main script's globbing settings
(
shopt -s nullglob
local files=( $path_pattern )
if [ ${#files[@]} -eq 0 ]; then
return # No files matched the glob
fi
# Calculate total size for all matched files
for file in "${files[@]}"; do
if [ -e "$file" ]; then
size_bytes=$((size_bytes + $(du -sb "$file" | cut -f1)))
fi
done
)
total_freed=$((total_freed + size_bytes))
size_human=$(echo "$size_bytes" | awk '{
if ($1 >= 1024*1024*1024) { printf "%.2f GB", $1/(1024*1024*1024) }
else if ($1 >= 1024*1024) { printf "%.2f MB", $1/(1024*1024) }
else if ($1 >= 1024) { printf "%.2f KB", $1/1024 }
else { printf "%d Bytes", $1 }
}')
if [ "$DRY_RUN" = true ]; then
echo " ✓ (dry run) $path_pattern ($size_human)"
else
# Suppress "no such file or directory" errors if glob doesn't match anything
rm -rf $path_pattern 2>/dev/null
echo "$path_pattern ($size_human)"
fi
}
echo "Cleaning project..."
echo ""
if [ "$CLEAN_CACHE_ONLY" = true ]; then
echo "Cache:"
for path in "${CACHE_PATHS[@]}"; do
delete_path "$path"
done
else
echo "Cache:"
for path in "${CACHE_PATHS[@]}"; do
delete_path "$path"
done
echo ""
echo "Build:"
for path in "${BUILD_PATHS[@]}"; do
delete_path "$path"
done
fi
if [ "$CLEAN_DEPS" = true ]; then
if [ "$DRY_RUN" = false ]; then
echo ""
read -p "Delete vendor/ and node_modules/? [y/N] " -n 1 -r
echo ""
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
echo "Aborted."
exit 1
fi
fi
echo ""
echo "Dependencies (--deps):"
for path in "${DEP_PATHS[@]}"; do
delete_path "$path"
done
fi
# Final summary
if [ "$total_freed" -gt 0 ]; then
total_freed_human=$(echo "$total_freed" | awk '{
if ($1 >= 1024*1024*1024) { printf "%.2f GB", $1/(1024*1024*1024) }
else if ($1 >= 1024*1024) { printf "%.2f MB", $1/(1024*1024) }
else if ($1 >= 1024) { printf "%.2f KB", $1/1024 }
else { printf "%d Bytes", $1 }
}')
echo ""
echo "Total freed: $total_freed_human"
fi