From 08bcb91b5c15c6cc38fbd1ae75819e5d7021ab93 Mon Sep 17 00:00:00 2001 From: finalnode <45065360+finalnode@users.noreply.github.com> Date: Sat, 16 May 2026 19:36:35 +0200 Subject: [PATCH] . --- .DS_Store | Bin 6148 -> 8196 bytes Readme.md | 14 +++- generator/__pycache__/cli.cpython-311.pyc | Bin 0 -> 3154 bytes generator/__pycache__/cli.cpython-38.pyc | Bin 0 -> 1862 bytes .../__pycache__/havelseiten.cpython-311.pyc | Bin 49161 -> 55327 bytes .../__pycache__/havelseiten.cpython-38.pyc | Bin 27557 -> 27590 bytes .../settings_config.cpython-38.pyc | Bin 19766 -> 19766 bytes .../__pycache__/validate.cpython-311.pyc | Bin 38439 -> 38491 bytes generator/__pycache__/validate.cpython-38.pyc | Bin 19746 -> 19795 bytes generator/cli.py | 78 ++++++++++++++++++ generator/havelseiten.py | 9 +- generator/validate.py | 7 +- havelseite/einstellungen.md | 4 +- havelseiten | 17 ++++ 14 files changed, 117 insertions(+), 12 deletions(-) create mode 100644 generator/__pycache__/cli.cpython-311.pyc create mode 100644 generator/__pycache__/cli.cpython-38.pyc create mode 100644 generator/cli.py create mode 100755 havelseiten diff --git a/.DS_Store b/.DS_Store index 2ca674b43e03f66e02f592028b9984eea1241646..c1e0b7ffe7310e7ef8f7e33cd13aada31c7e24d2 100644 GIT binary patch literal 8196 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 NqP@tCyuCLA`afKV+kgN7 literal 0 HcmV?d00001 diff --git a/generator/__pycache__/havelseiten.cpython-311.pyc b/generator/__pycache__/havelseiten.cpython-311.pyc index 7b4510f7de6b03f330b05bac42f2de8b1a43df00..f9e10fea50e9da22daf7d3557be5c40e85de99ed 100644 GIT binary patch delta 17304 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 BzT5x+ delta 12574 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 WRLt<0d9$?d%+i%;jPL4Yfd2;ztrEZh diff --git a/generator/__pycache__/havelseiten.cpython-38.pyc b/generator/__pycache__/havelseiten.cpython-38.pyc index bfe892e3add1b37059dc781a26d53de873b1c0af..4bc1abe4157b3a9f177d971d79f9f6483d2df565 100644 GIT binary patch delta 9628 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 diff --git a/generator/__pycache__/settings_config.cpython-38.pyc b/generator/__pycache__/settings_config.cpython-38.pyc index e283c1b7b2b506c240c285c7a718aee15ccd227d..95ec11da55dc584965aed35e666ee17f1b8ee993 100644 GIT binary patch delta 172 zcmdlsi*eg5#tl=1G?=myi?kUS7;bSS=2fL;rl;oJVol60$t=6YQc_f!dW$JB?-p}q zYVqbhLRU1ogMliG6hMUL989!|PYUjuY06oV+ AIsgCw delta 189 zcmdlsi*eg5#tl=1G+0WCN>hup85kIDF=Zv*Vol60$t=6Yl$dvmxiYo*7Dr-URcdB> zYTo8OLRU1o6@coBfPd6N@0MJHF-hH7x8l@=ER4a`ZsB>>fh5MeFND@n~O(gkXp{MGh9_dAdw?jXV* QXqm+1`C6=-W$dN+01NX$y8r+H diff --git a/generator/__pycache__/validate.cpython-311.pyc b/generator/__pycache__/validate.cpython-311.pyc index 0ea933a62806338506d910de3e12b9adc3c98e27..06bf8d152c7c1a091b886d0734a09a6f26716d91 100644 GIT binary patch delta 537 zcmZ3!hUxYiCf?<|yj%=Gz(0{AD`+CGB;&D->d%(~DeF?&fwX$c`jk!}t&y@Jr5i|Vrff{<1=3n6n^O9L zw06qol!-uECuK{@WFW1ZvNdHYkk(7tmNFAa>!)l_nGK{3Qg)=wH3BjWfsA=T+9+jb z%0eJ*40OV-lqEnXn567ZSqc;}P1%#O3`m=$nx`zEyocGCaqs32%pV#BZ}F$)7v(0F z#22TQlw{_m7f*iBDxu5>@+TCq0BL3h2FA}*fQ;!3=?t}uH4H_3vV12F_JLgePQnTRnLc>^sd`UsRLk_8gQK;sz{CO>SG z((wmM$N;&;AwZ!9h8t2c4IU5J#Xc}Fvg+UE5Wm8qbCE;u3WweW4!x(F<=dAsGWt(G z+F{2U1k|UsnWOU=Bctu)_gx)afgl?|gw5v0?$?Y$ED$>bL3Ub$2%pU*y*-TFAPb8? mx{CrQbN3r_r2v^g#87-^vqyg^nd%(~DQi>OfwX$cx|B{Jt&y@mr5i|Vrff**1=3n68&mp$ zw06p-l!-uECuMWWWFW1ZvL$6Ikk(7tnlcke>!)l>nGK{3QnsheH2^XUfsA=T+9+j5 z%0eJ*oU$`zF_1P%*_E;cNSmhYPFV`1%~H)%mQCKrY|OZ4^C#vHjgr4aOG*oJQloP+ zi%X)5ONwH36hLG$!{i5@BAgRIo@Gd9sGTh6r8+sNO?I-U7B5Q;Lk;8PhBjGoAia!< zfnhZeLjWTKSZ+(3i2zg4N1#}dERZM$$xr^*CZ*!X$iN`O3>5JJiZn3XkdkTexXU7Z zg+=2ci`EqutqUw#cQ?DVFJ)x(oBXQ7jx`XdUVXD}=QBn|tH~nW9b5rGfg%uLxp`Ul zYeo*HB5RN>-kTTq_AqjTj4uM|DGHcu)o;v|3}gZkL-F;^<^82>A{>lz9~e*xvB|8{ F!T@$zm{|Y- diff --git a/generator/__pycache__/validate.cpython-38.pyc b/generator/__pycache__/validate.cpython-38.pyc index 6bee729204be788aa785fe5846177ffcc14264b5..c41a7c9a4480bcd000ed40b3769f1935804e0b2b 100644 GIT binary patch delta 893 zcmZ9IZAep57{~8(cfHM*=`deHNPEMW&KIIh=NmYk+ni)HB^shl@6~3TvvcndLyejc zeF)N1fu`k4eaLUIFQEp#m|3}uB#>K4^xjvAh#=^km0}&Zzw5p>l7tRSsM?e@AuJ&^- zgV0O-Ys4KB#z}4z3xtW|>;)Drh=rmd$OPdG2r4I|yAk@q$~mA5`SQPVypGI6S-8O< z#wk%=H)<2nERk^7uv??>lI)f}E$A*)ei_nW4sSE&njX=fIf{oA^AxcJF0~YB_K6(< z3E4?n#u6xei`OrSLPWu*j5fG~7mVRO_lT!cp&YWI#{@3z!CI%i&R%<_l@6W->CNm$V=@5pDB<$Bm zUN*6?I+^C|i7P$=`vx6|T!8 zh`7EeBLTgn1}}Mhon8@5;b74uOyj-9xA{fd_5gn@&V_I&sbm>I34JLo<=_?0G+!i~ zF=rEgHaEixuC6#w+Eyz1h;q0x4_=4PRyKm>9XUhCqiK57TfAnuuYE?tE{Y=*OL(qI z&;RwmSM5lP_+`{GY`{pPRh)0t!76rH(**MBgjPTDx#cEFlx0sxn}qbFs09et7kxJU zDi{W&eI#gOdZC9wTA3MxaRwNf4Klr~tm=UtHpr5kTaW0DXRZ2Vg|wl_BUI=Ejpovu@?lC!&|& pn(Cdnz4{Wo8FaMsOGHBNai^m$c4Hn|4J|nwpiYdBPt?Z5z;E{%2D<<2|tO3e_0rX^7XQrBHXMBg`5g3iTr-sgRv=X>7oTj_`4evpn! zl7^$-{i|{9>35`Tm>)Ox0t`pSAOV~YLQ}DPGseR5Bg)Kjk9}*=cuk>6d#v8;ZgAJvoi49+mwTOF@&^0#skm%ajIm>50drJ3 z`mar*YS;fB0lP{HVQw?^&@P_kY@a|D7~MKwzzmxMmhhx)Lbt>QX%q~6RDIUxR|4c2 z=GwD$(YTJ5K<5Q=IVyDdWQD9y4K~{Mq|o>9bzJl-WQXOwBO{en zAbp|SAd*Se{)|7J)7rPJ>|)T!U>WDD^2N>hud2ObY<`5jA*^Gu%RupzD-%^YJFF^d zsNgsVm}t?)^>9IM5QaG5f_#YUfuO3J>xK|dxv*8SKd!m*6INLm+XkCGIxMPA( 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:])) diff --git a/generator/havelseiten.py b/generator/havelseiten.py index 2ea97c4..bd30c40 100644 --- a/generator/havelseiten.py +++ b/generator/havelseiten.py @@ -94,9 +94,8 @@ def load_settings() -> dict: SETTINGS = DEFAULT_SETTINGS -def run_validation(): - settings_config.format_settings_file() - messages, language = validate.collect_messages() +def run_validation(format_settings: bool = True): + messages, language = validate.collect_messages(format_settings=format_settings) if not messages: print(validate.tr(language, "ok")) @@ -1643,10 +1642,10 @@ def copy_content_media(): ) -def build_site(): +def build_site(format_settings: bool = True): global SETTINGS - run_validation() + run_validation(format_settings=format_settings) SETTINGS = load_settings() if OUTPUT_DIR.exists(): diff --git a/generator/validate.py b/generator/validate.py index c77f747..2f94997 100644 --- a/generator/validate.py +++ b/generator/validate.py @@ -793,9 +793,12 @@ def validate_media_parameter( )) -def collect_messages() -> tuple[list[str], str]: +def collect_messages(format_settings: bool = True) -> tuple[list[str], str]: messages: list[str] = [] - settings_config.format_settings_file() + + if format_settings: + settings_config.format_settings_file() + language = language_from_settings() validate_settings(messages, language) diff --git a/havelseite/einstellungen.md b/havelseite/einstellungen.md index 4bda757..a15aa3d 100644 --- a/havelseite/einstellungen.md +++ b/havelseite/einstellungen.md @@ -8,10 +8,10 @@ Titel: Havelseiten - [ ] Englisch @einstellung:farbpalette -- [] Havel +- [x] Havel - [ ] Wasser - [ ] Wald -- [x ] Sonnenuntergang +- [ ] Sonnenuntergang - [ ] Dunkel - [ ] Küste - [ ] Segel diff --git a/havelseiten b/havelseiten new file mode 100755 index 0000000..3a3dd72 --- /dev/null +++ b/havelseiten @@ -0,0 +1,17 @@ +#!/usr/bin/env python3 +from __future__ import annotations + +from pathlib import Path +import sys + + +ROOT_DIR = Path(__file__).resolve().parent +GENERATOR_DIR = ROOT_DIR / "generator" + +sys.path.insert(0, str(GENERATOR_DIR)) + +from cli import main + + +if __name__ == "__main__": + raise SystemExit(main(sys.argv[1:]))