Files

81 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
# ── start.sh — Pokreće fiskalni mock server ─────────────────
# ./start.sh — pokreće server u pozadini
# ./start.sh -f — pokreće server u prvom planu (vidiš logove)
# ./start.sh status — proverava da li je server živ
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PID_FILE="$SCRIPT_DIR/data/server.pid"
PORT=4566
# Proveri da li server već radi
check_running() {
if [ -f "$PID_FILE" ]; then
PID=$(cat "$PID_FILE")
if kill -0 "$PID" 2>/dev/null; then
return 0 # radi
fi
fi
# Proveri i port
if ss -tlnp 2>/dev/null | grep -q ":$PORT "; then
return 0 # radi
fi
return 1 # ne radi
}
stop_server() {
echo "⏹ Zaustavljam server..."
if [ -f "$PID_FILE" ]; then
PID=$(cat "$PID_FILE")
kill "$PID" 2>/dev/null && echo " PID $PID ugašen"
rm -f "$PID_FILE"
fi
fuser -k "${PORT}/tcp" 2>/dev/null
echo "✅ Server zaustavljen"
}
case "${1:-}" in
status)
if check_running; then
echo "🟢 Server je POKRENUT na http://localhost:$PORT"
echo " PID: $(cat "$PID_FILE" 2>/dev/null || echo '?')"
else
echo "🔴 Server NIJE pokrenut"
fi
;;
stop)
stop_server
;;
-f|--foreground)
echo "🔧 Pokrećem server u PRVOM PLANU (Ctrl+C gasi)..."
cd "$SCRIPT_DIR"
python3 -u server.py
;;
*)
if check_running; then
echo "⚠️ Server je VEĆ pokrenut na http://localhost:$PORT"
echo " Koristi './start.sh stop' da ga zaustaviš, ili './start.sh status'"
exit 1
fi
echo "🔧 Pokrećem server u pozadini..."
cd "$SCRIPT_DIR"
mkdir -p data
nohup python3 -u server.py > "$SCRIPT_DIR/data/server_stdout.log" 2>&1 &
PID=$!
echo "$PID" > "$PID_FILE"
sleep 2
if check_running; then
echo "✅ Server pokrenut! PID: $PID"
echo " http://localhost:$PORT"
echo ""
echo " ./start.sh stop — zaustavi server"
echo " ./start.sh status — proveri status"
echo " ./start.sh -f — pokreni u prvom planu (vidiš logove uživo)"
else
echo "❌ Server nije uspeo da se pokrene. Proveri: data/server_stdout.log"
rm -f "$PID_FILE"
exit 1
fi
;;
esac