Sync deployment references for the runtime state relocation
shipped via ckn-bw (commit 6fae2fd). /opt/left4me/ is now a
root-owned deploy-artifact root (just src/); .venv and steamcmd
live at /var/lib/left4me/{.venv,steam}.
Touches:
- deploy/files/.../left4me-web.service: PATH + ExecStart
- deploy/files/.../left4me-workshop-refresh.service: WorkingDirectory
(was /opt/left4me, now /opt/left4me/src to match the web unit),
PATH, ExecStart
- scripts/sbin/left4me wrapper: flask path
- deploy/tests/test_example_units.py: PATH + ExecStart assertions
for the web unit; also fix a pre-existing broken assertion that
read "Environment=PATH=..." (the unit has Environment=HOME=...
PATH=... on one line, so "Environment=PATH=" was never present)
- now reads just "PATH=..."
- deploy/README.md: paths
- l4d2host/tests/test_cli.py: LEFT4ME_STEAMCMD fixture path
Design + as-shipped record:
docs/superpowers/specs/2026-05-15-runtime-state-relocation-design.md.
The original (narrower) prereq spec at
docs/superpowers/specs/2026-05-15-handoff-noneditable-install.md
is marked superseded with a pointer to what shipped + why the
scope grew (setuptools writes egg-info to source during PEP 517
build prep).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
17 lines
556 B
Bash
Executable file
17 lines
556 B
Bash
Executable file
#!/bin/sh
|
|
# Run l4d2web flask CLI commands as the left4me user with the deploy env loaded.
|
|
# Usage: left4me <flask-subcommand> [args...]
|
|
# Examples:
|
|
# left4me create-user alice --admin
|
|
# left4me seed-script-overlays /opt/left4me/src/examples/script-overlays
|
|
# left4me routes
|
|
set -eu
|
|
exec sudo -u left4me sh -c '
|
|
set -a
|
|
. /etc/left4me/host.env
|
|
. /etc/left4me/web.env
|
|
set +a
|
|
export JOB_WORKER_ENABLED=false
|
|
export PYTHONPATH=/opt/left4me/src
|
|
exec /var/lib/left4me/.venv/bin/flask --app l4d2web.app:create_app "$@"
|
|
' sh "$@"
|