Add kiesel_temperature_logging/src/kiesel_temperature_logging/cli.py

This commit is contained in:
Mika 2026-06-21 02:07:23 +00:00
parent fe129bcc7b
commit a5abca36ac

View file

@ -0,0 +1,53 @@
import argparse
import json
from pathlib import Path
from typing import List, Dict
from kiesel_temperature_logging import core
def main() -> None:
"""CLI entrypoint for Kiesel Temperature Logging and Analysis."""
parser = argparse.ArgumentParser(
description="CLI zur Analyse von Kieseltemperaturdaten."
)
parser.add_argument(
"--input",
required=True,
help="Pfad zur Eingabedatei mit Temperatur-Logs (JSON).",
)
parser.add_argument(
"--output",
required=False,
help="Pfad zur Ausgabedatei mit Analysedaten (JSON).",
)
args = parser.parse_args()
input_path = Path(args.input)
output_path = Path(args.output) if args.output else Path("output/temperature_analysis.json")
if not input_path.exists():
raise FileNotFoundError(f"Eingabedatei {input_path} wurde nicht gefunden.")
with input_path.open("r", encoding="utf-8") as f:
try:
data: List[Dict] = json.load(f)
except json.JSONDecodeError as e:
raise ValueError(f"Ungültiges JSON-Eingabeformat: {e}") from e
if not isinstance(data, list):
raise ValueError("Eingabedaten müssen eine Liste von Temperatur-Logs sein.")
# Analyse aufrufen
analysis_result = core.analyze_temperature_pulses(data)
# Output speichern
output_path.parent.mkdir(parents=True, exist_ok=True)
with output_path.open("w", encoding="utf-8") as f_out:
json.dump(analysis_result, f_out, indent=2, ensure_ascii=False)
print(f"Analyse abgeschlossen. Ergebnis gespeichert in: {output_path}")
if __name__ == "__main__":
main()