#!/bin/bash
#
# clean_logs.sh
# Cleans up runtime directories:
#   - log     : delete everything EXCEPT success.log and system.log
#   - file    : delete everything
#   - workers : delete everything
#
# Usage:
#   ./clean_logs.sh           # delete
#   ./clean_logs.sh --dry-run # show what would be deleted, delete nothing

set -euo pipefail

# Base var directory.
VAR_DIR="/var/www/html/home/var"

# Files to keep in the log folder.
LOG_KEEP=("system.log")

DRY_RUN=0
if [[ "${1:-}" == "--dry-run" || "${1:-}" == "-n" ]]; then
    DRY_RUN=1
fi

# clean_dir <directory> [keep1 keep2 ...]
clean_dir() {
    local dir="$1"; shift
    local keep=("$@")

    if [[ ! -d "$dir" ]]; then
        echo "Skip (not found): $dir" >&2
        return 0
    fi

    echo "== Cleaning: $dir =="

    local entry base k kept
    shopt -s dotglob nullglob
    for entry in "$dir"/*; do
        base="$(basename "$entry")"
        kept=0
        for k in "${keep[@]}"; do
            [[ "$base" == "$k" ]] && { kept=1; break; }
        done
        [[ "$kept" -eq 1 ]] && continue

        if [[ "$DRY_RUN" -eq 1 ]]; then
            echo "Would delete: $base"
        else
            rm -rf "$entry"
            echo "Deleted: $base"
        fi
    done
}

clean_dir "$VAR_DIR/log" "${LOG_KEEP[@]}"
clean_dir "$VAR_DIR/file"
clean_dir "$VAR_DIR/workers"
