From 3e8795ebe7a5583b78b5c87586c63c618ed6d0f8 Mon Sep 17 00:00:00 2001 From: Mika Date: Thu, 26 Feb 2026 12:52:57 +0000 Subject: [PATCH] Add exit_metrics_logging/src/exit_metrics_logging/cli.py --- .../src/exit_metrics_logging/cli.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 exit_metrics_logging/src/exit_metrics_logging/cli.py diff --git a/exit_metrics_logging/src/exit_metrics_logging/cli.py b/exit_metrics_logging/src/exit_metrics_logging/cli.py new file mode 100644 index 0000000..99bb78a --- /dev/null +++ b/exit_metrics_logging/src/exit_metrics_logging/cli.py @@ -0,0 +1,41 @@ +import argparse +import sys +from pathlib import Path + +from exit_metrics_logging import core + +def _build_parser() -> argparse.ArgumentParser: + parser = argparse.ArgumentParser( + description="CLI zur Protokollierung von Exit-Metriken für einen Run." + ) + parser.add_argument("--run_id", required=True, type=str, help="Eindeutiger Run-Identifier.") + parser.add_argument("--warn_rate", required=True, type=float, help="Prozentualer Anteil an Warnungen.") + parser.add_argument("--unknown_rate", required=True, type=float, help="Prozentualer Anteil unbekannter Zustände.") + parser.add_argument("--delta_t", required=True, type=float, help="Gemessene Zeitdifferenz in Sekunden.") + return parser + +def main() -> None: + parser = _build_parser() + args = parser.parse_args() + + # Eingabevalidierung + if not args.run_id: + parser.error("--run_id darf nicht leer sein.") + for param_name in ("warn_rate", "unknown_rate", "delta_t"): + val = getattr(args, param_name) + if not isinstance(val, float): + parser.error(f"{param_name} muss ein Float sein.") + + try: + core.log_metrics( + run_id=args.run_id, + warn_rate=args.warn_rate, + unknown_rate=args.unknown_rate, + delta_t=args.delta_t + ) + except Exception as e: + print(f"Fehler bei der Protokollierung: {e}", file=sys.stderr) + sys.exit(1) + +if __name__ == "__main__": + main()