diff --git a/1.logging_analysis/src/logging_analysis/cli.py b/1.logging_analysis/src/logging_analysis/cli.py new file mode 100644 index 0000000..8f87271 --- /dev/null +++ b/1.logging_analysis/src/logging_analysis/cli.py @@ -0,0 +1,59 @@ +import argparse +import json +import sys +from pathlib import Path +from typing import Optional +from logging_analysis.core import analyze_log + + +def main() -> None: + """Kommandozeilenschnittstelle für die Loganalyse.""" + parser = argparse.ArgumentParser( + description=( + "Analysiert Gate v1 Logdateien und erzeugt eine Zusammenfassung der Artefaktverfügbarkeit." + ) + ) + parser.add_argument( + "--input", + required=True, + help="Pfad zur Eingabe-Logdatei im JSON-Format." + ) + parser.add_argument( + "--output", + required=False, + help="Pfad zur Ausgabedatei mit der Analysezusammenfassung im JSON-Format." + ) + + args = parser.parse_args() + + input_path = Path(args.input) + output_path: Optional[Path] = Path(args.output) if args.output else None + + # Validierung des Eingabepfads + if not input_path.exists() or not input_path.is_file(): + sys.stderr.write(f"Fehler: Eingabedatei '{input_path}' existiert nicht oder ist keine Datei.\n") + sys.exit(1) + + try: + result = analyze_log(str(input_path)) + except Exception as e: + sys.stderr.write(f"Fehler bei der Analyse: {e}\n") + sys.exit(2) + + # Ausgabe auf STDOUT + summary_text = result.get("summary_text", "Keine Zusammenfassung verfügbar.") + sys.stdout.write(summary_text + "\n") + + # Optional: Ausgabe als JSON-Datei speichern + if output_path: + output_path.parent.mkdir(parents=True, exist_ok=True) + try: + with output_path.open("w", encoding="utf-8") as f: + json.dump(result, f, indent=2, ensure_ascii=False) + except Exception as e: + sys.stderr.write(f"Fehler beim Schreiben der Ausgabedatei '{output_path}': {e}\n") + sys.exit(3) + + +if __name__ == "__main__": + main()