Add 1.logging_analysis/src/logging_analysis/cli.py

This commit is contained in:
Mika 2026-02-13 12:26:34 +00:00
parent 9f092d44cc
commit 8a609e6b29

View file

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