from config.parser import ConfigParser from config.reloadtrigger import ReloadTrigger from models.home import Home class MaSH: """Max' Smart Home. Smart home automation framework.""" config_parser: ConfigParser """Parser for the config file.""" config_trigger: list[ReloadTrigger] """Active triggers for reloading the config.""" home: Home """Home to control and make smart.""" def __init__(self, config_parser: ConfigParser) -> None: """Initialize the framework. Args: config_parser (ConfigParser): Parser for the config file. """ self.config_parser = config_parser self.config_trigger = [] self.reload_config() def reload_config(self) -> None: """Reload the config.""" self.home = self.config_parser.get_config() # TODO: Check type def register_config_trigger(self, trigger: ReloadTrigger) -> bool: """Register a trigger for hot-reloading the config. Args: trigger (ReloadTrigger): Trigger for hot-reloading the config based on ReloadTrigger. Returns: bool: True if the trigger was registered, False if not. """ if trigger is None or trigger in self.config_trigger: return False trigger.on_reload(self.reload_config) self.config_trigger.append(trigger) return True