From ad4a559c3bbc1f519c8bbcb4c7f154a7a60b6966 Mon Sep 17 00:00:00 2001 From: Mika Date: Sun, 28 Jun 2026 02:06:08 +0000 Subject: [PATCH] Add artifact.001/src/artifact_001/cli.py --- artifact.001/src/artifact_001/cli.py | 45 ++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 artifact.001/src/artifact_001/cli.py diff --git a/artifact.001/src/artifact_001/cli.py b/artifact.001/src/artifact_001/cli.py new file mode 100644 index 0000000..cefeab3 --- /dev/null +++ b/artifact.001/src/artifact_001/cli.py @@ -0,0 +1,45 @@ +import argparse +import sys +from pathlib import Path +from datetime import datetime +from artifact_001 import core + + +def _parse_args() -> argparse.Namespace: + """Parst CLI-Argumente für das Meteor Detection Experiment.""" + parser = argparse.ArgumentParser( + description="Erfasst Meteore mit angegebener Belichtungszeit (ms)." + ) + parser.add_argument( + "--exposure_time", + type=float, + required=True, + help="Belichtungszeit in Millisekunden zur Steuerung der Aufnahme." + ) + return parser.parse_args() + + +def main() -> None: + """CLI-Einstiegspunkt: Führt die Meteorerfassung und das Logging aus.""" + args = _parse_args() + + # Eingabevalidierung + if args.exposure_time <= 0: + print("Fehler: Die Belichtungszeit muss positiv sein.", file=sys.stderr) + sys.exit(1) + + try: + events = core.capture_meteors(args.exposure_time) + if not isinstance(events, list): + raise TypeError("capture_meteors() muss eine Liste zurückgeben.") + + core.log_data(events) + print(f"[{datetime.now().isoformat()}] Meteorerfassung abgeschlossen.") + print(f"{len(events)} Ereignisse wurden aufgezeichnet.") + except Exception as exc: # pragma: no cover + print(f"Fehler bei der Ausführung: {exc}", file=sys.stderr) + sys.exit(1) + + +if __name__ == "__main__": + main()