import os import yaml DEFAULT_CONFIG_PATH = os.path.expanduser("~/.config/loopaware/infra-cli.yaml") class Config: def __init__(self, config_path=None): self.path = config_path or os.environ.get("INFRA_CONFIG") or DEFAULT_CONFIG_PATH self.data = self._load() def _load(self): data = {} if os.path.exists(self.path): with open(self.path, 'r') as f: data = yaml.safe_load(f) or {} elif os.path.exists("config.yaml"): self.path = os.path.abspath("config.yaml") with open(self.path, 'r') as f: data = yaml.safe_load(f) or {} return data def get(self, key, default=None): # Support ENV overrides: INFRA_PROXMOX_USER -> proxmox.user env_key = "INFRA_" + key.upper().replace('.', '_') if env_key in os.environ: return os.environ[env_key] parts = key.split('.') val = self.data for part in parts: if isinstance(val, dict) and part in val: val = val[part] else: return default return val def get_node(self, node_name): nodes = self.get('proxmox.nodes', {}) if not nodes: return None return nodes.get(node_name)