feat: allow configuration of root paths via CLI
This commit is contained in:
@@ -2,10 +2,8 @@ from typing import Annotated
|
|||||||
|
|
||||||
import typer
|
import typer
|
||||||
|
|
||||||
import api.directus as directus
|
|
||||||
import src.build as build
|
import src.build as build
|
||||||
import src.config as config
|
import src.config as config
|
||||||
import src.download as download
|
|
||||||
from src.edition import Edition
|
from src.edition import Edition
|
||||||
|
|
||||||
app = typer.Typer()
|
app = typer.Typer()
|
||||||
@@ -21,33 +19,12 @@ def main(
|
|||||||
Edition.ea,
|
Edition.ea,
|
||||||
Edition.nea,
|
Edition.nea,
|
||||||
],
|
],
|
||||||
skip_download_editions: Annotated[
|
source: Annotated[str | None, typer.Option(help="Content source directory.")] = None,
|
||||||
bool, typer.Option(help="Skip download for editions, will use cached files or fail.")
|
destination: Annotated[str | None, typer.Option(help="Destination directory to build to.")] = None,
|
||||||
] = False,
|
|
||||||
skip_download_assets: Annotated[
|
|
||||||
bool, typer.Option(help="Skip download for assets, will use cached assets or paceholders.")
|
|
||||||
] = False,
|
|
||||||
) -> None:
|
) -> None:
|
||||||
conf = config.Config()
|
conf = config.Config(content_path=source, build_path=destination)
|
||||||
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)
|
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
|
# Build surrounding website
|
||||||
bd.build_website()
|
bd.build_website()
|
||||||
# Build individual editions
|
# Build individual editions
|
||||||
|
|||||||
+4
-3
@@ -6,14 +6,14 @@ from pathlib import Path
|
|||||||
class Config:
|
class Config:
|
||||||
__env_prefix = "OHM"
|
__env_prefix = "OHM"
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self, content_path: str = None, build_path: str = None):
|
||||||
if os.path.isfile("config/config.json"):
|
if os.path.isfile("config/config.json"):
|
||||||
with open("config/config.json") as file:
|
with open("config/config.json") as file:
|
||||||
self.config = json.load(file)
|
self.config = json.load(file)
|
||||||
else:
|
else:
|
||||||
self.config = {}
|
self.config = {}
|
||||||
|
|
||||||
self.p_data = Path(self.get_config_value("content_path", "/var/www/content"))
|
self.p_data = Path(self.get_config_value("content") if content_path is None else content_path)
|
||||||
|
|
||||||
self.p_data_toc = self.p_data / "toc"
|
self.p_data_toc = self.p_data / "toc"
|
||||||
|
|
||||||
@@ -30,12 +30,13 @@ class Config:
|
|||||||
self.p_data_fragenkatalog = self.p_data_questions / "fragenkatalog3b.json"
|
self.p_data_fragenkatalog = self.p_data_questions / "fragenkatalog3b.json"
|
||||||
self.p_data_metadata = self.p_data_questions / "metadata3b.json"
|
self.p_data_metadata = self.p_data_questions / "metadata3b.json"
|
||||||
|
|
||||||
self.p_build = Path("./build")
|
self.p_build = Path(self.get_config_value("build_path", "./build") if build_path is None else build_path)
|
||||||
self.p_build_photos = self.p_build / "photos"
|
self.p_build_photos = self.p_build / "photos"
|
||||||
self.p_build_pictures = self.p_build / "pictures"
|
self.p_build_pictures = self.p_build / "pictures"
|
||||||
self.p_build_assets = self.p_build / "assets"
|
self.p_build_assets = self.p_build / "assets"
|
||||||
|
|
||||||
self.p_assets = Path("./assets")
|
self.p_assets = Path("./assets")
|
||||||
|
self.p_templates = Path("./templates")
|
||||||
|
|
||||||
def get_config_value(self, key: str, default=None):
|
def get_config_value(self, key: str, default=None):
|
||||||
if key in self.config:
|
if key in self.config:
|
||||||
|
|||||||
Reference in New Issue
Block a user