Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
41 lines
1.4 KiB
Python
41 lines
1.4 KiB
Python
"""Load the Nix-generated config and build-time versions for Sovran_SystemsOS_Hub."""
|
|
|
|
import json
|
|
import os
|
|
|
|
|
|
def load_config() -> dict:
|
|
"""Read config from the path injected by the Nix derivation."""
|
|
path = os.environ.get(
|
|
"SOVRAN_HUB_CONFIG",
|
|
os.path.join(
|
|
os.path.dirname(os.path.dirname(os.path.abspath(__file__))),
|
|
"config.json",
|
|
),
|
|
)
|
|
try:
|
|
with open(path, "r") as fh:
|
|
return json.load(fh)
|
|
except (FileNotFoundError, json.JSONDecodeError):
|
|
return {"refresh_interval": 5, "command_method": "systemctl", "services": []}
|
|
|
|
|
|
def load_versions() -> dict:
|
|
"""Read the Nix-generated or fallback build-time package versions."""
|
|
path = os.environ.get("SOVRAN_HUB_VERSIONS")
|
|
if not path:
|
|
# Candidate 1: parent folder (same as config.json, typical for Nix layout)
|
|
parent_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
candidate1 = os.path.join(parent_dir, "versions.json")
|
|
if os.path.exists(candidate1):
|
|
path = candidate1
|
|
else:
|
|
# Candidate 2: local package folder (dev folder structure)
|
|
path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "versions.json")
|
|
|
|
try:
|
|
with open(path, "r") as fh:
|
|
return json.load(fh)
|
|
except (FileNotFoundError, json.JSONDecodeError):
|
|
return {}
|