Files
buzzer/buzzer_tool/core/config.py

40 lines
1.4 KiB
Python

# core/config.py
import os
import sys
import yaml
DEFAULT_CONFIG = {
"port": None,
"baudrate": 115200,
"timeout": 5.0
}
def load_config(cli_args=None):
config = DEFAULT_CONFIG.copy()
cwd_config = os.path.join(os.getcwd(), "config.yaml")
script_dir = os.path.dirname(os.path.abspath(sys.argv[0]))
script_config = os.path.join(script_dir, "config.yaml")
yaml_path = cwd_config if os.path.exists(cwd_config) else script_config if os.path.exists(script_config) else None
if yaml_path:
try:
with open(yaml_path, "r", encoding="utf-8") as f:
yaml_data = yaml.safe_load(f)
if yaml_data and "serial" in yaml_data:
config["port"] = yaml_data["serial"].get("port", config["port"])
config["baudrate"] = yaml_data["serial"].get("baudrate", config["baudrate"])
config["timeout"] = yaml_data["serial"].get("timeout", config["timeout"])
except Exception as e:
print(f"Fehler beim Laden der Konfigurationsdatei {yaml_path}: {e}")
if cli_args:
if getattr(cli_args, "port", None) is not None:
config["port"] = cli_args.port
if getattr(cli_args, "baudrate", None) is not None:
config["baudrate"] = cli_args.baudrate
if getattr(cli_args, "timeout", None) is not None:
config["timeout"] = cli_args.timeout
return config