diff --git a/coretex/cli/commands/base_command.py b/coretex/cli/commands/base_command.py new file mode 100644 index 00000000..a1e7eda8 --- /dev/null +++ b/coretex/cli/commands/base_command.py @@ -0,0 +1,37 @@ +# Copyright (C) 2023 Coretex LLC + +# This file is part of Coretex.ai + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +from typing import Optional, Any, Callable + +import click + + +def base_command(name: Optional[str] = None, cls: Any = None, **attrs: Any) -> Any: + def decorator(f: Callable[..., Any]) -> Any: + f = click.option('--verbose', is_flag = True, help = "Enables berbose mode")(f) + + # Wrapper function to handle the verbose argument internally + def wrapper(*args, **kwargs): + verbose = kwargs.pop('verbose', False) + if verbose: + click.echo("Verbose mode is enabled.") + else: + click.echo("Verbose mode is disabled.") + return f(*args, **kwargs) + + return click.command(name = name, cls = cls, **attrs)(f) + return decorator diff --git a/coretex/cli/commands/node.py b/coretex/cli/commands/node.py index 0e28622e..2b06f498 100644 --- a/coretex/cli/commands/node.py +++ b/coretex/cli/commands/node.py @@ -19,6 +19,7 @@ import click +from .base_command import base_command from ..modules import ui from ..modules import node as node_module from ..modules.node import NodeStatus @@ -29,11 +30,10 @@ from ...configuration import NodeConfiguration, InvalidConfiguration, ConfigurationNotFound -@click.command() +@base_command() @click.option("--image", type = str, help = "Docker image url") -@click.option("--verbose", "verbose", is_flag = True, help = "Shows detailed output of command execution.") @onBeforeCommandExecute(node_module.initializeNodeConfiguration) -def start(image: Optional[str], verbose: bool = False) -> None: +def start(image: Optional[str]) -> None: nodeConfig = NodeConfiguration.load() if node_module.isRunning(): @@ -66,8 +66,7 @@ def start(image: Optional[str], verbose: bool = False) -> None: @click.command() -@click.option("--verbose", "verbose", is_flag = True, help = "Shows detailed output of command execution.") -def stop(verbose: bool = False) -> None: +def stop() -> None: nodeConfig = NodeConfiguration.load() if not node_module.isRunning(): @@ -80,9 +79,8 @@ def stop(verbose: bool = False) -> None: @click.command() @click.option("-y", "autoAccept", is_flag = True, help = "Accepts all prompts.") @click.option("-n", "autoDecline", is_flag = True, help = "Declines all prompts.") -@click.option("--verbose", "verbose", is_flag = True, help = "Shows detailed output of command execution.") @onBeforeCommandExecute(node_module.initializeNodeConfiguration) -def update(autoAccept: bool, autoDecline: bool, verbose: bool = False) -> None: +def update(autoAccept: bool, autoDecline: bool) -> None: if autoAccept and autoDecline: ui.errorEcho("Only one of the flags (\"-y\" or \"-n\") can be used at the same time.") return diff --git a/coretex/cli/main.py b/coretex/cli/main.py index 96da0e0b..5453f98b 100644 --- a/coretex/cli/main.py +++ b/coretex/cli/main.py @@ -15,6 +15,7 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +from typing import Optional from importlib.metadata import version as getLibraryVersion import click @@ -58,7 +59,8 @@ def update() -> None: ui.stdEcho("Coretex version is up to date.") -@click.group(cls = ClickExceptionInterceptor) +# @click.group(cls = ClickExceptionInterceptor) +@click.group() @utils.onBeforeCommandExecute(utils.checkLibVersion, excludeSubcommands = ["update"]) def cli() -> None: pass diff --git a/coretex/cli/modules/node.py b/coretex/cli/modules/node.py index 5100da98..051bc2a6 100644 --- a/coretex/cli/modules/node.py +++ b/coretex/cli/modules/node.py @@ -445,7 +445,7 @@ def configureNode(advanced: bool) -> NodeConfiguration: nodeConfig.endpointInvocationPrice = promptInvocationPrice() else: - ui.stdEcho("To configure node manually run coretex node config with --verbose flag.") + ui.stdEcho("To configure node manually run coretex node config with --advanced flag.") publicKey: Optional[bytes] = None if isinstance(nodeConfig.secret, str) and nodeConfig.secret != config_defaults.DEFAULT_NODE_SECRET: