Add artifact.001/src/artifact_001/cli.py

This commit is contained in:
Mika 2026-06-28 02:06:08 +00:00
parent d22fd971d9
commit ad4a559c3b

View file

@ -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()