Files
2026-06-25 15:28:46 +03:00

57 lines
1.4 KiB
Python

#!/usr/bin/env python3
"""Filesystem layout helpers shared by the web configurator and updater.
On the target device the layout is:
/opt/buttontask/
versions/<ver>/ (ButtonTask + webconfig/)
current -> versions/<ver>
config/ icons/ (shared, never replaced)
run/ (heartbeat, update-status.json)
scripts/ (privileged helpers, see scripts/)
"""
import os
from pathlib import Path
def install_root():
"""Resolve the ButtonTask install root (the directory holding
versions/, current, config/, run/)."""
env = os.environ.get("BUTTONTASK_ROOT")
if env:
return Path(env)
return Path("/opt/buttontask")
def run_dir():
p = install_root() / "run"
try:
p.mkdir(parents=True, exist_ok=True)
except OSError:
pass
return p
def versions_dir():
return install_root() / "versions"
def current_link():
return install_root() / "current"
def scripts_dir():
"""Directory with the privileged helper scripts.
Prefer the installed copy under <root>/scripts, fall back to the copy
that ships next to this package (dev/source tree)."""
installed = install_root() / "scripts"
if installed.is_dir():
return installed
return Path(__file__).resolve().parent / "scripts"
QT_HEARTBEAT = "qt.alive"
UPDATE_STATUS = "update-status.json"
BUTTON_LOG = "button-log.jsonl"