diff --git a/logger_setup/src/logger_setup/cli.py b/logger_setup/src/logger_setup/cli.py new file mode 100644 index 0000000..45fc4f3 --- /dev/null +++ b/logger_setup/src/logger_setup/cli.py @@ -0,0 +1,57 @@ +import argparse +import sys +from pathlib import Path +from logger_setup import core + + +def parse_args() -> argparse.Namespace: + """Parst CLI-Argumente für Start des Sensor-Loggings.""" + parser = argparse.ArgumentParser( + description="Steuert den Mikroklima-Logger mit definierbarem Messintervall und Ausgabedatei." + ) + parser.add_argument( + "--interval", + type=float, + required=True, + help="Zeitintervall für Messungen in Sekunden (float)." + ) + parser.add_argument( + "--output", + type=str, + required=True, + help="Pfad zur CSV-Datei für gespeicherte Sensordaten." + ) + return parser.parse_args() + + +def main() -> None: + """CLI-Einstiegspunkt: Startet Logging-Prozess anhand von Benutzerparametern.""" + args = parse_args() + + # Input validation + if args.interval <= 0: + print("Fehler: Intervall muss größer als 0 sein.", file=sys.stderr) + sys.exit(1) + + output_path = Path(args.output).expanduser().resolve() + + # Sicherstellen, dass das Zielverzeichnis existiert + try: + output_path.parent.mkdir(parents=True, exist_ok=True) + except OSError as exc: + print(f"Fehler beim Erstellen des Zielverzeichnisses: {exc}", file=sys.stderr) + sys.exit(1) + + # Logging starten und speichern + try: + core.start_logging(interval=args.interval) + core.save_to_csv(filename=str(output_path)) + except KeyboardInterrupt: + print("\nLogging abgebrochen durch Benutzer.") + except Exception as exc: # Fallback für unerwartete Fehler + print(f"Fehler beim Starten des Loggings: {exc}", file=sys.stderr) + sys.exit(1) + + +if __name__ == "__main__": + main()