From 9b99ca42f47cd49e3be06439343e073086717512 Mon Sep 17 00:00:00 2001 From: Mika Date: Wed, 11 Feb 2026 12:51:46 +0000 Subject: [PATCH] Add unknown_whitelist_manager/src/unknown_whitelist_manager/cli.py --- .../src/unknown_whitelist_manager/cli.py | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 unknown_whitelist_manager/src/unknown_whitelist_manager/cli.py diff --git a/unknown_whitelist_manager/src/unknown_whitelist_manager/cli.py b/unknown_whitelist_manager/src/unknown_whitelist_manager/cli.py new file mode 100644 index 0000000..0dbb608 --- /dev/null +++ b/unknown_whitelist_manager/src/unknown_whitelist_manager/cli.py @@ -0,0 +1,60 @@ +import argparse +import sys +from pathlib import Path +from unknown_whitelist_manager import core + + +class CLIError(Exception): + """Custom Exception for CLI errors.""" + pass + + +def parse_args(argv: list[str] | None = None) -> argparse.Namespace: + """Parses command line arguments.""" + parser = argparse.ArgumentParser( + description="Verwaltet die Unknown-Whitelist für CI-Prozesse." + ) + parser.add_argument( + "--add-entry", + required=True, + help="Der einzufügende Whitelist-Eintrag als Textstring." + ) + parser.add_argument( + "--whitelist-path", + required=False, + default="unknown_whitelist.json", + help="Pfad zur bestehenden Whitelist-Datei (default: unknown_whitelist.json)." + ) + return parser.parse_args(argv) + + +def main(argv: list[str] | None = None) -> None: + """Entry point for CLI - processes arguments and updates whitelist.""" + try: + args = parse_args(argv) + whitelist_path = Path(args.whitelist_path) + + # Simple input validation as per constraint 'input_validation_required' + entry_text = args.add_entry.strip() + if not entry_text: + raise CLIError("Der Eintrag darf nicht leer sein.") + + from dataclasses import dataclass + + @dataclass + class WhitelistEntry: + entry: str + + entry = WhitelistEntry(entry=entry_text) + core.update_whitelist(str(whitelist_path), entry) + + except CLIError as e: + print(f"Fehler: {e}", file=sys.stderr) + sys.exit(1) + except Exception as e: + print(f"Unerwarteter Fehler: {e}", file=sys.stderr) + sys.exit(2) + + +if __name__ == "__main__": + main() \ No newline at end of file