82 lines
1.7 KiB
Bash
Executable File
82 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT="/root/codex/source-gamepanel"
|
|
PNPM="/root/.nvm/versions/node/v24.13.1/bin/pnpm"
|
|
SERVICES=(
|
|
"source-gamepanel-api.service"
|
|
"source-gamepanel-web.service"
|
|
"source-gamepanel-daemon.service"
|
|
)
|
|
|
|
usage() {
|
|
cat <<'EOF'
|
|
Usage: panelctl <command>
|
|
|
|
Commands:
|
|
start Start all services
|
|
stop Stop all services
|
|
restart Restart all services
|
|
status Show status of all services
|
|
logs Tail logs of all services
|
|
rebuild Rebuild API/Web/Daemon binaries
|
|
update Pull latest code, rebuild, migrate DB, restart services
|
|
deploy Rebuild current code, migrate DB, restart services
|
|
EOF
|
|
}
|
|
|
|
rebuild_all() {
|
|
cd "$ROOT"
|
|
"$PNPM" install --frozen-lockfile
|
|
"$PNPM" --filter @source/api build
|
|
"$PNPM" --filter @source/web build
|
|
source "$HOME/.cargo/env"
|
|
cd "$ROOT/apps/daemon"
|
|
cargo build --release
|
|
}
|
|
|
|
migrate_db() {
|
|
cd "$ROOT"
|
|
"$PNPM" db:migrate
|
|
}
|
|
|
|
cmd="${1:-}"
|
|
case "$cmd" in
|
|
start)
|
|
systemctl start "${SERVICES[@]}"
|
|
;;
|
|
stop)
|
|
systemctl stop "${SERVICES[@]}"
|
|
;;
|
|
restart)
|
|
systemctl restart "${SERVICES[@]}"
|
|
;;
|
|
status)
|
|
systemctl --no-pager --full status "${SERVICES[@]}"
|
|
;;
|
|
logs)
|
|
journalctl -u "${SERVICES[0]}" -u "${SERVICES[1]}" -u "${SERVICES[2]}" -f
|
|
;;
|
|
rebuild)
|
|
rebuild_all
|
|
;;
|
|
update)
|
|
cd "$ROOT"
|
|
git pull --ff-only
|
|
rebuild_all
|
|
migrate_db
|
|
systemctl restart "${SERVICES[@]}"
|
|
systemctl --no-pager --full status "${SERVICES[@]}"
|
|
;;
|
|
deploy)
|
|
rebuild_all
|
|
migrate_db
|
|
systemctl restart "${SERVICES[@]}"
|
|
systemctl --no-pager --full status "${SERVICES[@]}"
|
|
;;
|
|
*)
|
|
usage
|
|
exit 1
|
|
;;
|
|
esac
|