Add artifact.whitelist_expiration/src/artifact_whitelist_expiration/cli.py

This commit is contained in:
Mika 2026-02-22 12:32:34 +00:00
parent 5c12809983
commit e30a561801

View file

@ -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()