Aggiunge pulisci.sh per svuotare output/ e input/*.csv
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
f28bddc5a2
commit
512d15f4c8
2 files changed
+84
No files matched your search
Executable
+84
@@ -0,0 +1,84 @@
|
||||
#!/usr/bin/env bash
|
||||
# Pulisce i dati: svuota la cartella di output e cancella i CSV in input/ (con --solo-output lascia input/ com'è).
|
||||
|
||||
set -euo pipefail
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
uso() {
|
||||
cat <<'E'
|
||||
uso: ./pulisci.sh [-n] [-y] [--solo-output]
|
||||
|
||||
Cancella i dati:
|
||||
- il contenuto della cartella di output ([output] cartella_output in config.toml, default "output"):
|
||||
risultati generati da `fitseg`, si rifanno rilanciando l'analisi. La cartella resta;
|
||||
- i file *.csv in input/: i dati grezzi, NON si rifanno da soli (vanno rigenerati con ../gen_data,
|
||||
vedi docs/uso.md §2). La cartella e il suo .gitkeep restano.
|
||||
|
||||
Chiede conferma prima di cancellare, salvo -y.
|
||||
|
||||
opzioni:
|
||||
--solo-output pulisce solo l'output, lascia input/ com'è
|
||||
-n, --dry-run mostra cosa verrebbe cancellato senza cancellare
|
||||
-y, --si non chiede conferma
|
||||
-h, --help mostra questo aiuto
|
||||
|
||||
esempi:
|
||||
./pulisci.sh svuota output/ e input/*.csv (con conferma)
|
||||
./pulisci.sh -n mostra cosa cancellerebbe, senza cancellare
|
||||
./pulisci.sh --solo-output svuota solo output/
|
||||
./pulisci.sh -y svuota tutto senza chiedere
|
||||
E
|
||||
}
|
||||
|
||||
input=1 secco=0 si=0
|
||||
for a in "$@"; do
|
||||
case "$a" in
|
||||
--solo-output) input=0 ;;
|
||||
-n|--dry-run) secco=1 ;;
|
||||
-y|--si) si=1 ;;
|
||||
-h|--help) uso; exit 0 ;;
|
||||
*) echo "pulisci.sh: opzione non riconosciuta: $a" >&2; uso >&2; exit 2 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
# cartella di output da config.toml (chiave cartella_output), altrimenti "output"
|
||||
out=$(sed -n 's/^cartella_output[[:space:]]*=[[:space:]]*"\([^"]*\)".*/\1/p' config.toml 2>/dev/null | head -n1)
|
||||
out=${out:-output}
|
||||
|
||||
# sicurezza: solo percorsi relativi dentro il repository
|
||||
case "$out" in
|
||||
""|/*|.|..|*..*) echo "pulisci.sh: cartella di output non sicura: '$out'" >&2; exit 1 ;;
|
||||
esac
|
||||
|
||||
# file da cancellare: contenuto di output/ (tranne un eventuale .gitkeep) e input/*.csv (salvo --solo-output)
|
||||
elenco=()
|
||||
if [ -d "$out" ]; then
|
||||
while IFS= read -r -d '' f; do elenco+=("$f"); done < <(find "$out" -mindepth 1 -maxdepth 1 ! -name .gitkeep -print0)
|
||||
fi
|
||||
csv=()
|
||||
if [ "$input" -eq 1 ] && [ -d input ]; then
|
||||
while IFS= read -r -d '' f; do csv+=("$f"); done < <(find input -maxdepth 1 -type f -name '*.csv' -print0)
|
||||
fi
|
||||
|
||||
if [ ${#elenco[@]} -eq 0 ] && [ ${#csv[@]} -eq 0 ]; then
|
||||
echo "niente da pulire"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "da cancellare:"
|
||||
for f in "${elenco[@]}" "${csv[@]}"; do echo " $f"; done
|
||||
|
||||
if [ "$secco" -eq 1 ]; then
|
||||
echo "(dry-run: nessun file cancellato)"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$si" -eq 0 ]; then
|
||||
[ ${#csv[@]} -gt 0 ] && echo "ATTENZIONE: i CSV in input/ sono i dati grezzi e non si rigenerano da soli."
|
||||
read -r -p "procedere? [s/N] " risposta
|
||||
case "$risposta" in s|S|si|SI|sì) ;; *) echo "annullato"; exit 1 ;; esac
|
||||
fi
|
||||
|
||||
[ ${#elenco[@]} -gt 0 ] && rm -rf -- "${elenco[@]}"
|
||||
[ ${#csv[@]} -gt 0 ] && rm -f -- "${csv[@]}"
|
||||
echo "pulito: ${#elenco[@]} elementi in $out/, ${#csv[@]} CSV in input/"
|
||||
File renamed without changes.
Reference in new issue
Block a user