feat: CLI entrypoint for 50ohm app

This commit is contained in:
Tim Grelka
2026-01-18 19:42:52 +01:00
parent 6703b24d11
commit eece5e0f84
4 changed files with 119 additions and 0 deletions
+61
View File
@@ -0,0 +1,61 @@
from typing import Annotated
import typer
import api.directus as directus
import src.build as build
import src.config as config
import src.download as download
from src.edition import Edition
app = typer.Typer()
@app.command()
def main(
edition: Annotated[list[Edition], typer.Option(help="Edition to build, can be specified multiple times.")] = [ # noqa: B006 -- default value is required for typer
Edition.n,
Edition.e,
Edition.a,
Edition.ne,
Edition.ea,
Edition.nea,
],
skip_download_editions: Annotated[
bool, typer.Option(help="Skip download for editions, will use cached files or fail.")
] = False,
skip_download_assets: Annotated[
bool, typer.Option(help="Skip download for assets, will use cached assets or paceholders.")
] = False,
) -> None:
conf = config.Config()
api = directus.DirectusAPI(conf.question_base_url, conf.question_access_token)
content_api = directus.DirectusAPI(conf.content_base_url, conf.content_access_token)
dl = download.Download(api, content_api, conf)
bd = build.Build(conf)
if not skip_download_editions:
# Download the text files
for e in edition:
dl.download_edition(e)
if not skip_download_assets:
# Download additional files
# dl.download_question_metadata() # (now constant file metadata3b.json)
dl.download_photos()
dl.download_pictures()
dl.download_includes()
dl.download_snippets()
dl.download_content()
# Build surrounding website
bd.build_website()
# Build individual editions
for e in edition:
bd.build_edition(e)
# Copy assets to build folder
bd.build_assets()
if __name__ == "__main__":
app()