Пример #1
0
def ktr_get_conf() -> KtrConf:
    """
    This function gets and parses :py:class:`KtrConf` instances for configuration values.

    Returns:
        KtrConf:  highest-priority or requested :py:class:`KtrConf` instance
    """

    # configurations, in ascending priority
    ktr_configs = OrderedDict()

    def_config = KtrConf(KtrConfType.DEF).from_file(*get_conf_from_file_args(KtrConfType.DEF))
    sys_config = KtrConf(KtrConfType.SYS).from_file(*get_conf_from_file_args(KtrConfType.SYS))
    usr_config = KtrConf(KtrConfType.USR).from_file(*get_conf_from_file_args(KtrConfType.USR))
    prj_config = KtrConf(KtrConfType.PRJ).from_file(*get_conf_from_file_args(KtrConfType.PRJ))

    ktr_configs[KtrConfType.FBK] = get_fallback_config()
    ktr_configs[KtrConfType.DEF] = def_config
    ktr_configs[KtrConfType.SYS] = sys_config
    ktr_configs[KtrConfType.USR] = usr_config
    ktr_configs[KtrConfType.PRJ] = prj_config
    ktr_configs[KtrConfType.ENV] = get_env_config()
    ktr_configs[KtrConfType.CLI] = get_cli_config()

    ktr_conf = None

    cli_args = CLIArgs()

    if cli_args.get_priconf():
        ktr_conf = ktr_configs[cli_args.get_priconf()]

    if ktr_conf is not None:
        return ktr_conf

    # KTR_CONF should contain the highest-priority,
    # non-None configuration for every value
    ktr_conf = ktr_configs[KtrConfType.FALLBACK]

    for conf_type in ktr_configs:
        # skip FALLBACK config
        if conf_type == KtrConfType.FALLBACK:
            continue

        conf = ktr_configs[conf_type]
        if conf is not None:
            ktr_conf.succby(conf)

    return ktr_conf
Пример #2
0
def get_cli_config() -> KtrConf:
    """
    This function reads and parses command line settings and switches and puts them into a
    :py:class:`KtrConf` instance for further processing.

    Returns:
        KtrConf: settings parsed from command line settings or switches
    """

    cli_args = CLIArgs()

    # if no settings were set at command line, return None
    if cli_args.get_ktr_basedir() is None:
        return None

    result = KtrConf(KtrConfType.CLI, basedir=os.path.abspath(cli_args.get_ktr_basedir()))

    if result.validate():
        return result
    else:
        print(LOG_PREFIX1 + "Not all necessary values have been set at CLI.", flush=True)
        return None