Add artifact.001/src/artifact_001/cli.py
This commit is contained in:
parent
5de1eadfd4
commit
bd710468bf
1 changed files with 56 additions and 0 deletions
56
artifact.001/src/artifact_001/cli.py
Normal file
56
artifact.001/src/artifact_001/cli.py
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
import argparse
|
||||
from datetime import datetime
|
||||
from artifact_001 import core
|
||||
|
||||
|
||||
def _parse_args() -> argparse.Namespace:
|
||||
parser = argparse.ArgumentParser(
|
||||
description="CLI zur Erfassung eines aux=3 Messwerts und Logging als JSON-Eintrag."
|
||||
)
|
||||
parser.add_argument("--timestamp", required=True, help="Zeitpunkt der Messung im ISO-Format.")
|
||||
parser.add_argument("--measured_p", required=True, type=float, help="Gemessener p-Wert.")
|
||||
parser.add_argument(
|
||||
"--freeze_ok", required=True, type=str, choices=["true", "false"], help="Gating-Ergebnis als true/false."
|
||||
)
|
||||
parser.add_argument(
|
||||
"--setup_fingerprint", required=True, type=str, help="Fingerprint der Mess-Setup-Konfiguration."
|
||||
)
|
||||
parser.add_argument("--policy_hash", required=True, type=str, help="Hash der verwendeten Policy.")
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
def main() -> None:
|
||||
args = _parse_args()
|
||||
|
||||
# Input validation
|
||||
try:
|
||||
timestamp = datetime.fromisoformat(args.timestamp)
|
||||
except ValueError as exc:
|
||||
raise SystemExit(f"Ungültiges Zeitformat: {args.timestamp}") from exc
|
||||
|
||||
freeze_ok_str = args.freeze_ok.strip().lower()
|
||||
if freeze_ok_str not in ("true", "false"):
|
||||
raise SystemExit("Ungültiger Wert für --freeze_ok: Muss 'true' oder 'false' sein.")
|
||||
freeze_ok = freeze_ok_str == "true"
|
||||
|
||||
measured_p = args.measured_p
|
||||
setup_fingerprint = args.setup_fingerprint.strip()
|
||||
policy_hash = args.policy_hash.strip()
|
||||
|
||||
# CI readiness checks
|
||||
assert isinstance(measured_p, float), "measured_p muss float sein"
|
||||
assert isinstance(freeze_ok, bool), "freeze_ok muss bool sein"
|
||||
assert setup_fingerprint, "setup_fingerprint darf nicht leer sein"
|
||||
assert policy_hash, "policy_hash darf nicht leer sein"
|
||||
|
||||
core.log_measurement(
|
||||
timestamp=timestamp,
|
||||
measured_p=measured_p,
|
||||
freeze_ok=freeze_ok,
|
||||
setup_fingerprint=setup_fingerprint,
|
||||
policy_hash=policy_hash,
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Loading…
Reference in a new issue