def missing_config_error(repo: IConfigRepository, element: DefaultElement) -> None: options = None if element.config_group is not None: options = repo.get_group_options(element.config_group, ObjectType.CONFIG) opt_list = "\n".join(["\t" + x for x in options]) msg = ( f"Could not find '{element.config_name}' in the config group '{element.config_group}'" f"\nAvailable options:\n{opt_list}\n" ) else: msg = dedent( f"""\ Could not load {element.config_path()}. """ ) descs = [] for src in repo.get_sources(): descs.append(f"\t{repr(src)}") lines = "\n".join(descs) msg += "\nConfig search path:" + f"\n{lines}" raise MissingConfigException( missing_cfg_file=element.config_path(), message=msg, options=options, )
def config_not_found_error(repo: IConfigRepository, tree: DefaultsTreeNode) -> None: element = tree.node options = None group = None if isinstance(element, GroupDefault): group = element.get_group_path() options = repo.get_group_options(group, ObjectType.CONFIG) if element.primary: msg = dedent( f"""\ Cannot find primary config '{element.get_config_path()}'. Check that it's in your config search path. """ ) else: parent = tree.parent.node if tree.parent is not None else None if isinstance(element, GroupDefault): msg = f"Could not find '{element.get_config_path()}'\n" if options is not None and len(options) > 0: opt_list = "\n".join(["\t" + x for x in options]) msg = f"{msg}\nAvailable options in '{group}':\n" + opt_list else: msg = dedent( f"""\ Could not load '{element.get_config_path()}'. """ ) if parent is not None: msg = f"In '{parent.get_config_path()}': {msg}" descs = [] for src in repo.get_sources(): descs.append(f"\t{repr(src)}") lines = "\n".join(descs) msg += "\nConfig search path:" + f"\n{lines}" raise MissingConfigException( missing_cfg_file=element.get_config_path(), message=msg, options=options, )