diff --git a/artifact.whitelist_expiration/src/artifact_whitelist_expiration/cli.py b/artifact.whitelist_expiration/src/artifact_whitelist_expiration/cli.py new file mode 100644 index 0000000..812656b --- /dev/null +++ b/artifact.whitelist_expiration/src/artifact_whitelist_expiration/cli.py @@ -0,0 +1,44 @@ +import argparse +import sys +from pathlib import Path +from artifact_whitelist_expiration import core + +def main() -> None: + """CLI entrypoint for managing whitelist entries.""" + parser = argparse.ArgumentParser(description="Whitelist Expiration Management Tool") + parser.add_argument("--input", required=True, help="Pfad zur Whitelist-Datei im JSON-Format.") + parser.add_argument("--action", required=True, choices=["set", "renew"], help="Festzulegende Aktion ('set' oder 'renew').") + parser.add_argument("--entry-id", required=False, help="Eindeutige Kennung des Whitelist-Eintrags.") + parser.add_argument("--days", required=False, type=int, help="Anzahl der Tage bis zum Ablauf (nur für Aktion 'set').") + + args = parser.parse_args() + + input_path = Path(args.input) + if not input_path.exists(): + print(f"Fehler: Datei {input_path} nicht gefunden.", file=sys.stderr) + sys.exit(1) + + try: + if args.action == "set": + if not args.entry_id or args.days is None: + print("Fehler: Für 'set' müssen --entry-id und --days angegeben werden.", file=sys.stderr) + sys.exit(1) + core.set_expiration(entry_id=args.entry_id, days=args.days) + print(f"Ablaufdatum für Eintrag '{args.entry_id}' gesetzt.") + + elif args.action == "renew": + if not args.entry_id: + print("Fehler: Für 'renew' muss --entry-id angegeben werden.", file=sys.stderr) + sys.exit(1) + renewed = core.renew_entry(entry_id=args.entry_id) + if renewed: + print(f"Eintrag '{args.entry_id}' erfolgreich verlängert.") + else: + print(f"Eintrag '{args.entry_id}' konnte nicht verlängert werden (möglicherweise abgelaufen).", file=sys.stderr) + + except Exception as exc: + print(f"Fehler bei der Verarbeitung: {exc}", file=sys.stderr) + sys.exit(1) + +if __name__ == "__main__": + main() \ No newline at end of file