Pass CLI config to the app as JSON in PAGERITE_CONFIG

This commit is contained in:
2026-09-03 16:14:59 +00:00
parent 029bfe105e
commit 9d70f17587
6 changed files with 54 additions and 22 deletions
+28
View File
@@ -0,0 +1,28 @@
"""CLI → app configuration, passed as JSON in the ``PAGERITE_CONFIG`` env var.
Kept dependency-free (msgspec only) so ``__main__`` can build and serialize
the config before any app module is imported, and the app side parses the
same struct back. Import-time safe: nothing here reads the environment
until ``load()`` is called.
"""
import os
import msgspec
class Config(msgspec.Struct):
"""Configuration passed from the CLI entry point to the app."""
#: Public hostname of the site; names the per-site data directory
#: ``<hostname>/{content.kantadb, analytics.json, files}`` under the cwd.
hostname: str = "localhost"
#: Download/update the DB-IP city lite database at startup (--dbip).
dbip: bool = False
def load() -> Config:
"""Parse ``PAGERITE_CONFIG``, or the defaults when unset."""
if raw := os.getenv("PAGERITE_CONFIG"):
return msgspec.json.decode(raw.encode(), type=Config)
return Config()