#!/usr/bin/env bash
# Remove pastas/arquivos gerados localmente que não precisam ficar no disco entre builds,
# ou que são recriados por `npm run build` / `npm install`.
#
# Uso:
#   ./scripts/cleanup-unnecessary-dirs.sh           # remove só artefatos de build
#   ./scripts/cleanup-unnecessary-dirs.sh --dry-run # apenas lista o que seria removido
#   ./scripts/cleanup-unnecessary-dirs.sh --with-node-modules
#   ./scripts/cleanup-unnecessary-dirs.sh --git-hints # mostra comandos para limpar o repositório
#
# Não remove: código-fonte, public/fullcalendar (app usa), ícones na raiz de public/, etc.

set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$ROOT"

DRY_RUN=0
WITH_NODE_MODULES=0
GIT_HINTS=0

for arg in "$@"; do
	case "$arg" in
		--dry-run) DRY_RUN=1 ;;
		--with-node-modules) WITH_NODE_MODULES=1 ;;
		--git-hints) GIT_HINTS=1 ;;
		-h|--help)
			grep '^#' "$0" | grep -v '#!/usr' | sed 's/^# //' | sed 's/^#//'
			exit 0
			;;
	esac
done

rm_path() {
	local path="$1"
	if [[ ! -e "$path" ]]; then
		return 0
	fi
	if [[ "$DRY_RUN" -eq 1 ]]; then
		echo "[dry-run] rm -rf $path"
	else
		echo "Removendo: $path"
		rm -rf "$path"
	fi
}

if [[ "$GIT_HINTS" -eq 1 ]]; then
	cat <<'EOF'

=== Sugestões para o repositório Git (opcional) ===

1) Parar de versionar metadados do NetBeans (pasta nbproject/):
   git rm -r --cached nbproject
   (o .gitignore já ignora /nbproject/)

2) Remover o ZIP duplicado do FullCalendar se a pasta public/fullcalendar/ já existe:
   git rm public/fullcalendar-4.3.1.zip

Depois: git commit -m "Remove artefatos de IDE e zip duplicado"

EOF
	exit 0
fi

echo "=== Artefatos regeneráveis (Vite + cópia de assets) ==="
rm_path "$ROOT/public/build"
rm_path "$ROOT/public/hot"
rm_path "$ROOT/public/css"
rm_path "$ROOT/public/js"
rm_path "$ROOT/public/vendor"
rm_path "$ROOT/public/fonts"
rm_path "$ROOT/public/mix-manifest.json"

if [[ "$WITH_NODE_MODULES" -eq 1 ]]; then
	echo "=== node_modules (reinstalar com: npm install) ==="
	rm_path "$ROOT/node_modules"
else
	echo "(omitido node_modules; use --with-node-modules para remover)"
fi

echo "=== Concluído ==="
if [[ "$DRY_RUN" -eq 0 ]]; then
	echo "Para gerar de novo os assets: npm run build"
fi
