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
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