Add logging_tool/src/logging_tool/cli.py

This commit is contained in:
Mika 2026-04-05 13:56:51 +00:00
parent 891322e7a0
commit db253fb29c

View file

@ -0,0 +1,67 @@
import argparse
import sys
import datetime
from pathlib import Path
from logging_tool import core
def _parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser(
description="CLI zur Aufnahme von Preflight-Messwerten und deren Logging."
)
parser.add_argument("--timestamp", required=True, help="Zeitstempel des Versuchs (ISO8601).")
parser.add_argument("--measured_p", type=float, required=True, help="Gemessener Druckwert.")
parser.add_argument("--freeze_ok", required=True, help="Boolean, ob der Wert im Freeze-Bereich liegt (true/false).")
parser.add_argument("--setup_fingerprint", required=True, help="Fingerabdruck der Konfiguration.")
parser.add_argument("--policy_hash", required=True, help="Policy-Konfigurationshash.")
return parser.parse_args()
def _parse_boolean(value: str) -> bool:
lower_value = value.strip().lower()
if lower_value in {"true", "1", "yes", "y"}:
return True
if lower_value in {"false", "0", "no", "n"}:
return False
raise ValueError(f"Ungültiger Bool-Wert für freeze_ok: {value}")
def _parse_timestamp(value: str) -> datetime.datetime:
try:
# Unterstützt ISO8601-Formate
return datetime.datetime.fromisoformat(value.replace("Z", "+00:00"))
except ValueError as exc:
raise ValueError(f"Ungültiger Zeitstempel: {value}") from exc
def main() -> None:
args = _parse_args()
try:
timestamp = _parse_timestamp(args.timestamp)
measured_p: float = args.measured_p
freeze_ok: bool = _parse_boolean(args.freeze_ok)
setup_fingerprint: str = args.setup_fingerprint
policy_hash: str = args.policy_hash
except Exception as err:
print(f"Eingabefehler: {err}", file=sys.stderr)
sys.exit(2)
try:
core.log_preflight_attempt(
timestamp=timestamp,
measured_p=measured_p,
freeze_ok=freeze_ok,
setup_fingerprint=setup_fingerprint,
policy_hash=policy_hash,
)
except Exception as err:
print(f"Fehler beim Logging: {err}", file=sys.stderr)
sys.exit(1)
else:
print("Preflight-Versuch erfolgreich geloggt.")
if __name__ == "__main__":
main()