diff --git a/orchestra/cmds/clean.py b/orchestra/cmds/clean.py index 79c05bed1cbcd58e68fe25b1845031f4d35f943c..985862b197191c7f6491fb109a05e4b0728be25a 100644 --- a/orchestra/cmds/clean.py +++ b/orchestra/cmds/clean.py @@ -1,6 +1,9 @@ -from ..model.configuration import Configuration import shutil +from loguru import logger + +from ..model.configuration import Configuration + def install_subcommand(sub_argparser): cmd_parser = sub_argparser.add_parser("clean", handler=handle_clean, help="Remove build/source directories") @@ -10,6 +13,12 @@ def install_subcommand(sub_argparser): def handle_clean(args, config: Configuration): build = config.get_build(args.component) + + if not build: + suggested_component_name = config.get_suggested_component_name(args.component) + logger.error(f"Component {args.component} not found! Did you mean {suggested_component_name}?") + exit(1) + if input(f"Do you want to clean {build.qualified_name}? [y/N] ").lower() != "y": return diff --git a/orchestra/cmds/clone.py b/orchestra/cmds/clone.py index a2de711172e093709d164d2087500882c6d7dd6f..e183d954fe40096d80c87b3b4a126ac76a426c01 100644 --- a/orchestra/cmds/clone.py +++ b/orchestra/cmds/clone.py @@ -1,5 +1,7 @@ -from ..model.configuration import Configuration +from loguru import logger + from ..executor import Executor +from ..model.configuration import Configuration def install_subcommand(sub_argparser): @@ -10,6 +12,12 @@ def install_subcommand(sub_argparser): def handle_clone(args, config: Configuration): build = config.get_build(args.component) + + if not build: + suggested_component_name = config.get_suggested_component_name(args.component) + logger.error(f"Component {args.component} not found! Did you mean {suggested_component_name}?") + exit(1) + if not build.clone: print("This component does not have a git repository configured!") return diff --git a/orchestra/cmds/components.py b/orchestra/cmds/components.py index 6a63fb85cab77cf4752848ef853f0637c728cbba..252af662b43896b831479816b7afd8cd5f5d44b8 100644 --- a/orchestra/cmds/components.py +++ b/orchestra/cmds/components.py @@ -1,3 +1,5 @@ +from loguru import logger + from ..model.configuration import Configuration from ..util import get_installed_build @@ -13,6 +15,12 @@ def install_subcommand(sub_argparser): def handle_components(args, config: Configuration): if args.component: build = config.get_build(args.component) + + if not build: + suggested_component_name = config.get_suggested_component_name(args.component) + logger.error(f"Component {args.component} not found! Did you mean {suggested_component_name}?") + exit(1) + components = {build.component.name: build.component} else: components = config.components diff --git a/orchestra/cmds/configure.py b/orchestra/cmds/configure.py index da7666e57cec3cdb3f072635787d874526f9c69d..e0704eeef478b03ea07792fe7260c81060846fd9 100644 --- a/orchestra/cmds/configure.py +++ b/orchestra/cmds/configure.py @@ -1,5 +1,7 @@ -from ..model.configuration import Configuration +from loguru import logger + from ..executor import Executor +from ..model.configuration import Configuration def install_subcommand(sub_argparser): @@ -10,5 +12,11 @@ def install_subcommand(sub_argparser): def handle_configure(args, config: Configuration): build = config.get_build(args.component) + + if not build: + suggested_component_name = config.get_suggested_component_name(args.component) + logger.error(f"Component {args.component} not found! Did you mean {suggested_component_name}?") + exit(1) + executor = Executor(args) executor.run(build.configure, force=args.force) diff --git a/orchestra/cmds/environment.py b/orchestra/cmds/environment.py index d086aa54081f0915a3245b31a739ad27851a46ec..ad34d620bd43fbc5960bf3dc18217bd3bb0cd68f 100644 --- a/orchestra/cmds/environment.py +++ b/orchestra/cmds/environment.py @@ -1,3 +1,5 @@ +from loguru import logger + from ..util import export_environment @@ -11,4 +13,10 @@ def handle_environment(args, config): print(export_environment(config.global_env())) else: build = config.get_build(args.component) + + if not build: + suggested_component_name = config.get_suggested_component_name(args.component) + logger.error(f"Component {args.component} not found! Did you mean {suggested_component_name}?") + exit(1) + print(export_environment(build.install.environment)) diff --git a/orchestra/cmds/graph.py b/orchestra/cmds/graph.py index e074e1340a165d26b0cae6700c31f11b212e3e3e..ab10f88a66af51bf289f1402bddcfe2d46276a9b 100644 --- a/orchestra/cmds/graph.py +++ b/orchestra/cmds/graph.py @@ -1,3 +1,5 @@ +from loguru import logger + from ..model.configuration import Configuration @@ -10,7 +12,14 @@ def install_subcommand(sub_argparser): def handle_graph(args, config: Configuration): if args.component: - actions = [config.get_build(args.component).install] + build = config.get_build(args.component) + + if not build: + suggested_component_name = config.get_suggested_component_name(args.component) + logger.error(f"Component {args.component} not found! Did you mean {suggested_component_name}?") + exit(1) + + actions = [build.install] else: actions = set() for component in config.components.values(): diff --git a/orchestra/cmds/install.py b/orchestra/cmds/install.py index 543ee11b23d5c65ef9fa66688df0d00ada165553..0003bb9988ed5db795141be344a8224b5724cab6 100644 --- a/orchestra/cmds/install.py +++ b/orchestra/cmds/install.py @@ -1,5 +1,7 @@ -from ..model.configuration import Configuration +from loguru import logger + from ..executor import Executor +from ..model.configuration import Configuration def install_subcommand(sub_argparser): @@ -13,5 +15,11 @@ def install_subcommand(sub_argparser): def handle_install(args, config: Configuration): build = config.get_build(args.component) + + if not build: + suggested_component_name = config.get_suggested_component_name(args.component) + logger.error(f"Component {args.component} not found! Did you mean {suggested_component_name}?") + exit(1) + executor = Executor(args) executor.run(build.install, force=args.force) diff --git a/orchestra/cmds/shell.py b/orchestra/cmds/shell.py index b3c320bf4e1fcb843bf00639d3fd95eb0f753ac1..4fbc26b9486d4095b0d54b2829f0b1180d1b5079 100644 --- a/orchestra/cmds/shell.py +++ b/orchestra/cmds/shell.py @@ -6,6 +6,8 @@ import termios import tty from subprocess import Popen +from loguru import logger + from ..actions.util import run_script from ..model.configuration import Configuration from ..util import export_environment @@ -23,6 +25,12 @@ def handle_shell(args, config: Configuration): env["PS1"] = "(orchestra) $PS1" else: build = config.get_build(args.component) + + if not build: + suggested_component_name = config.get_suggested_component_name(args.component) + logger.error(f"Component {args.component} not found! Did you mean {suggested_component_name}?") + exit(1) + env = build.install.environment env["PS1"] = f"(orchestra - {build.qualified_name}) $PS1" diff --git a/orchestra/model/configuration.py b/orchestra/model/configuration.py index 93a28dbbf5550f77a461a47f32b3c6071f9c7c77..9774bed891801cb4be580cca0e71b7aef0eea448 100644 --- a/orchestra/model/configuration.py +++ b/orchestra/model/configuration.py @@ -68,8 +68,7 @@ class Configuration: component_name, build_name = parse_component_name(comp_spec) component = self.components.get(component_name) if not component: - suggested_component_name = self.get_suggested_component_name(component_name) - raise Exception(f"Component {component_name} not found! Did you mean {suggested_component_name}?") + return None if build_name: build = component.builds[build_name] else: