feat: Aggiungi funzionalità di eliminazione per clienti e preventivi con gestione delle dipendenze
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user