Esempio n. 1
0
async def async_from_config_file(
    config_path: str,
    hass: core.HomeAssistant,
    verbose: bool = False,
    skip_pip: bool = True,
    log_rotate_days: Any = None,
    log_file: Any = None,
    log_no_color: bool = False,
) -> Optional[core.HomeAssistant]:
    """Read the configuration file and try to start all the functionality.

    Will add functionality to 'hass' parameter.
    This method is a coroutine.
    """
    # Set config dir to directory holding config file
    config_dir = os.path.abspath(os.path.dirname(config_path))
    hass.config.config_dir = config_dir

    if not is_virtual_env():
        await async_mount_local_lib_path(config_dir)

    async_enable_logging(hass, verbose, log_rotate_days, log_file,
                         log_no_color)

    await hass.async_add_executor_job(conf_util.process_ha_config_upgrade,
                                      hass)

    # ais config
    ais_config = str(os.path.dirname(__file__))
    ais_config += "/ais-dom-config/configuration.yaml"

    try:
        config_dict = await hass.async_add_executor_job(
            conf_util.load_yaml_config_file, ais_config)
    except HomeAssistantError as err:
        _LOGGER.error("Error loading %s: %s", ais_config, err)
        return None
    try:
        user_config_dict = await hass.async_add_executor_job(
            conf_util.load_yaml_config_file, config_path)
    except HomeAssistantError as err:
        _LOGGER.error("Error loading %s: %s", config_path, err)
        # return None
    finally:
        clear_secret_cache()

    try:
        import homeassistant.components.ais_dom.ais_utils as ais_utils

        ais_utils.dict_merge(config_dict, user_config_dict)
    except:
        _LOGGER.error("Error loading user customize")

    return await async_from_config_dict(config_dict,
                                        hass,
                                        enable_log=False,
                                        skip_pip=skip_pip)
Esempio n. 2
0
async def async_hass_config_yaml(hass: HomeAssistant) -> Dict:
    """Load YAML from a Home Assistant configuration file.

    This function allow a component inside the asyncio loop to reload its
    configuration by itself. Include package merge.

    This method is a coroutine.
    """

    def _load_hass_yaml_config() -> Dict:
        path = find_config_file(hass.config.config_dir)
        if path is None:
            raise HomeAssistantError(
                f"Config file not found in: {hass.config.config_dir}"
            )
        config = load_yaml_config_file(path)
        return config

    # ais config load
    def _load_ais_yaml_config() -> Dict:
        ais_config_path = str(os.path.dirname(__file__))
        ais_config_path += "/ais-dom-config/configuration.yaml"
        if ais_config_path is None:
            raise HomeAssistantError(
                "Config file not found in: {}".format(hass.config.config_dir)
            )
        config = load_yaml_config_file(ais_config_path)
        return config

    # Not using async_add_executor_job because this is an internal method.
    config = await hass.loop.run_in_executor(None, _load_hass_yaml_config)
    core_config = config.get(CONF_CORE, {})
    await merge_packages_config(hass, config, core_config.get(CONF_PACKAGES, {}))

    # ais config
    try:
        import homeassistant.components.ais_dom.ais_utils as ais_utils

        ais_config = await hass.async_add_executor_job(_load_ais_yaml_config)
        ais_utils.dict_merge(ais_config, config)
    except:
        _LOGGER.error("Error loading user customize")
        return config
    return ais_config
Esempio n. 3
0
async def async_ais_merge_configs(ais_config, config) -> Dict:
    """Load YAML from a Home Assistant configuration file.

    This function allow a component inside the asyncio loop to reload its
    configuration by itself. Include package merge.
    """
    # Not using async_add_executor_job because this is an internal method.
    try:
        # AIS dom dict merge
        import homeassistant.components.ais_dom.ais_utils as ais_utils

        ais_config = ais_utils.dict_merge(ais_config, config)
    except:  # noqa: E722 pylint: disable=bare-except
        _LOGGER.error("Error loading user customize")
    return ais_config