79 lines
1.6 KiB
Python
79 lines
1.6 KiB
Python
from __future__ import annotations
|
|
|
|
import argparse
|
|
from pathlib import Path
|
|
import sys
|
|
|
|
import havelseiten as builder
|
|
import settings_config
|
|
import validate
|
|
|
|
|
|
ROOT_DIR = Path(__file__).resolve().parent.parent
|
|
|
|
|
|
def format_command() -> int:
|
|
changed = settings_config.format_settings_file()
|
|
settings_file = settings_config.active_settings_file()
|
|
|
|
if not settings_file:
|
|
print("Keine Einstellungsdatei gefunden.")
|
|
return 1
|
|
|
|
path = settings_file.relative_to(ROOT_DIR)
|
|
|
|
if changed:
|
|
print(f"formatiert: {path}")
|
|
else:
|
|
print(f"bereits formatiert: {path}")
|
|
|
|
return 0
|
|
|
|
|
|
def validate_command() -> int:
|
|
return validate.main()
|
|
|
|
|
|
def build_command() -> int:
|
|
builder.build_site(format_settings=True)
|
|
return 0
|
|
|
|
|
|
def main(argv: list[str] | None = None) -> int:
|
|
parser = argparse.ArgumentParser(
|
|
prog="havelseiten",
|
|
description="Havelseiten formatieren, pruefen und bauen."
|
|
)
|
|
subparsers = parser.add_subparsers(dest="command", required=True)
|
|
|
|
subparsers.add_parser(
|
|
"format",
|
|
help="havelseite/einstellungen.md formatieren"
|
|
)
|
|
subparsers.add_parser(
|
|
"validate",
|
|
help="Einstellungen und Markdown-Dateien pruefen"
|
|
)
|
|
subparsers.add_parser(
|
|
"build",
|
|
help="Website nach ausgabe/ bauen"
|
|
)
|
|
|
|
args = parser.parse_args(argv)
|
|
|
|
if args.command == "format":
|
|
return format_command()
|
|
|
|
if args.command == "validate":
|
|
return validate_command()
|
|
|
|
if args.command == "build":
|
|
return build_command()
|
|
|
|
parser.print_help()
|
|
return 1
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main(sys.argv[1:]))
|