Ports push_scripts.sh (1497 lines of bash) to a SvelteKit + SQLite web app that manages a fleet of T5 Plutonium servers running on Komodo. Same push and beta workflow as the shell script, with a live SSE pipeline view, a !rt-token-gated auth modal that hard-pauses deployments on stale tokens, per-file audit diffs, and a Komodo-container deployment target. - Push/beta engines port the exact filter, held-by-beta, conflict, and stale-backup rules from the shell script - SQLite (better-sqlite3) replaces script_metadata.json; a one-shot importer moves legacy state over on first boot - 16 vitest tests cover push add/update/skip, beta open→rollback, open→promote, conflict guards, sweep frozen/manual branches, and IW4M login/status parsing - docker/ + komodo/stack.toml deploy as a managed container on the same host as the game servers, /root/zombies bind-mounted at the same path the shell script used
33 lines
1017 B
TOML
33 lines
1017 B
TOML
# Komodo stack definition. Deploys electric-cherry as a managed container on
|
|
# the same host running the T5 Plutonium servers. Mounts /root/zombies so the
|
|
# app can push scripts to the same paths push_scripts.sh used, and dedicates
|
|
# a small subdir for its SQLite state.
|
|
|
|
[[stack]]
|
|
name = "electric-cherry"
|
|
|
|
[stack.services.web]
|
|
image = "electric-cherry:latest"
|
|
restart = "unless-stopped"
|
|
ports = ["3000:3000"]
|
|
|
|
volumes = [
|
|
"/root/zombies:/root/zombies:rw",
|
|
"/root/zombies/.electric-cherry:/data:rw"
|
|
]
|
|
|
|
[stack.services.web.env]
|
|
SHARED_SCRIPTS = "/root/zombies/shared/scripts"
|
|
SERVERS_ROOT = "/root/zombies/t5"
|
|
REL_DEST = "runtime/plutonium/storage/t5/raw/scripts/sp"
|
|
DB_PATH = "/data/cherry.db"
|
|
LEGACY_METADATA = "/root/zombies/script_metadata.json"
|
|
DEPLOY_KEEP_DAYS = "7"
|
|
|
|
# secrets: bind via Komodo's env-file or secret store
|
|
KOMODO_ADDRESS = "https://komodo.example.internal"
|
|
KOMODO_API_KEY = ""
|
|
KOMODO_API_SECRET = ""
|
|
IW4M_ADDRESS = "http://iw4m.example.internal"
|
|
IW4M_CLIENT_ID = ""
|