feat: Aggiungi funzionalità di eliminazione per clienti e preventivi con gestione delle dipendenze

This commit is contained in:
2026-10-19 15:48:15 +02:00
parent d6a9978167
commit 31d5152d8c
20 changed files with 673 additions and 17 deletions
Executable
+89
View File
@@ -0,0 +1,89 @@
#!/bin/bash
# Avvia l'ambiente di sviluppo completo (vedi docs/AVVIO_LOCALE.md):
# - backoffice Laravel (API + admin) -> http://localhost:8000
# - app cliente preventivi (Vue) -> http://localhost:5199
# - configuratore 3D (Vite) -> http://localhost:5173
# Ctrl+C ferma tutti i servizi.
set -euo pipefail
ROOT="$(cd "$(dirname "$0")" && pwd)"
BACKOFFICE="$ROOT/backoffice"
CLIENTE="$BACKOFFICE/cliente"
port_in_use() { lsof -nP -iTCP:"$1" -sTCP:LISTEN >/dev/null 2>&1; }
# --- Controlli preliminari ---------------------------------------------------
for cmd in php pnpm lsof; do
command -v "$cmd" >/dev/null || { echo "Errore: '$cmd' non trovato nel PATH." >&2; exit 1; }
done
if ! port_in_use 3306; then
echo "Errore: MySQL non risponde sulla porta 3306. Avvialo (es. da Herd) e riprova." >&2
exit 1
fi
for port in 8000 5199 5173; do
if port_in_use "$port"; then
echo "Errore: la porta $port è già occupata:" >&2
lsof -nP -iTCP:"$port" -sTCP:LISTEN >&2
exit 1
fi
done
[ -d "$BACKOFFICE/vendor" ] || (cd "$BACKOFFICE" && composer install)
[ -d "$CLIENTE/node_modules" ] || (cd "$CLIENTE" && pnpm install)
[ -d "$ROOT/node_modules" ] || (cd "$ROOT" && pnpm install)
# --- Avvio servizi -----------------------------------------------------------
PIDS=()
# Termina un processo e tutti i suoi discendenti (pnpm -> vite, artisan serve -> php -S).
kill_tree() {
local child
for child in $(pgrep -P "$1" 2>/dev/null); do kill_tree "$child"; done
kill -TERM "$1" 2>/dev/null || true
}
cleanup() {
trap - INT TERM EXIT
echo
echo "Arresto dei servizi..."
for pid in "${PIDS[@]}"; do kill_tree "$pid"; done
wait 2>/dev/null || true
}
trap cleanup EXIT
trap 'exit 0' INT TERM
# Esegue un comando in una cartella prefissando ogni riga di output con un'etichetta.
run() {
local label="$1" dir="$2"; shift 2
(cd "$dir" && exec "$@") > >(sed -u "s/^/[$label] /") 2>&1 &
PIDS+=($!)
}
run "laravel" "$BACKOFFICE" php artisan serve --port=8000
run "cliente" "$CLIENTE" pnpm dev
run "config " "$ROOT" pnpm dev
cat <<EOF
Servizi in avvio:
Configuratore http://localhost:5173/?sistema=pvc&type=finestra_2_ante
App cliente http://localhost:5199
API http://localhost:8000/api
Admin http://localhost:8000/admin (admin@kreiosinfissi.it / password)
Ctrl+C per fermare tutto.
EOF
# Se uno dei servizi termina, ferma anche gli altri.
while true; do
for pid in "${PIDS[@]}"; do
if ! kill -0 "$pid" 2>/dev/null; then
echo "Un servizio si è fermato, arresto degli altri." >&2
exit 1
fi
done
sleep 1
done