| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- #!/usr/bin/env bash
- # cleanup-tmp.sh - Clean up old temporary files from .tmp directory
- set -euo pipefail
- # Defaults
- SESSION_DAYS=7
- TASK_DAYS=30
- EXTERNAL_DAYS=7
- FORCE=false
- # Parse arguments
- for arg in "$@"; do
- case "$arg" in
- --force) FORCE=true ;;
- --session-days=*) SESSION_DAYS="${arg#*=}" ;;
- --task-days=*) TASK_DAYS="${arg#*=}" ;;
- --external-days=*) EXTERNAL_DAYS="${arg#*=}" ;;
- esac
- done
- # Find old files
- SESSION_FILES=$(find .tmp/sessions -maxdepth 1 -mindepth 1 -type d -mtime +${SESSION_DAYS} 2>/dev/null || true)
- TASK_FILES=$(find .tmp/tasks -maxdepth 1 -mindepth 1 -type d -mtime +${TASK_DAYS} 2>/dev/null | while read d; do
- # Only include completed tasks (skip active ones)
- if [ -f "$d/task.json" ] && grep -q '"status": "completed"' "$d/task.json" 2>/dev/null; then
- echo "$d"
- fi
- done || true)
- EXTERNAL_FILES=$(find .tmp/external-context -maxdepth 1 -mindepth 1 -type d -mtime +${EXTERNAL_DAYS} 2>/dev/null || true)
- SESSION_COUNT=$(echo "$SESSION_FILES" | grep -c . 2>/dev/null || echo 0)
- TASK_COUNT=$(echo "$TASK_FILES" | grep -c . 2>/dev/null || echo 0)
- EXTERNAL_COUNT=$(echo "$EXTERNAL_FILES" | grep -c . 2>/dev/null || echo 0)
- TOTAL=$((SESSION_COUNT + TASK_COUNT + EXTERNAL_COUNT))
- if [ "$TOTAL" -eq 0 ]; then
- echo '{"status":"success","deleted":{"sessions":0,"tasks":0,"external":0},"freed_space":"0 B","summary":"No old temporary files found."}'
- exit 0
- fi
- # Show what will be deleted
- if [ "$FORCE" = false ]; then
- echo "Files to be deleted:"
- [ -n "$SESSION_FILES" ] && echo "$SESSION_FILES" | sed 's/^/ [session] /'
- [ -n "$TASK_FILES" ] && echo "$TASK_FILES" | sed 's/^/ [task] /'
- [ -n "$EXTERNAL_FILES" ] && echo "$EXTERNAL_FILES" | sed 's/^/ [external] /'
- echo ""
- read -r -p "Delete $TOTAL items? [y/N] " confirm
- [[ "$confirm" =~ ^[Yy]$ ]] || { echo "Cancelled."; exit 0; }
- fi
- # Delete
- [ -n "$SESSION_FILES" ] && echo "$SESSION_FILES" | xargs rm -rf
- [ -n "$TASK_FILES" ] && echo "$TASK_FILES" | xargs rm -rf
- [ -n "$EXTERNAL_FILES" ] && echo "$EXTERNAL_FILES" | xargs rm -rf
- echo "{\"status\":\"success\",\"deleted\":{\"sessions\":${SESSION_COUNT},\"tasks\":${TASK_COUNT},\"external\":${EXTERNAL_COUNT}},\"summary\":\"Cleaned up ${TOTAL} old temporary items.\"}"
|