Add logging_tool/src/logging_tool/cli.py
This commit is contained in:
parent
891322e7a0
commit
db253fb29c
1 changed files with 67 additions and 0 deletions
67
logging_tool/src/logging_tool/cli.py
Normal file
67
logging_tool/src/logging_tool/cli.py
Normal 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()
|
||||||
Loading…
Reference in a new issue