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