From 7a7f37e5fc614c169d135ce9681f606a736ebcda Mon Sep 17 00:00:00 2001 From: Eric Gustin <34000337+EricGustin@users.noreply.github.com> Date: Fri, 17 Jan 2025 15:48:36 -0800 Subject: [PATCH] Add `arcade --version` (#211) # PR Description Implements a version callback for the arcade CLI. ### Usage `arcade --version` OR `arcade -v` ### Example Output `Arcade (version 0.1.5)` --- arcade/arcade/cli/main.py | 15 +++++++++++++++ arcade/arcade/cli/utils.py | 10 ++++++++++ 2 files changed, 25 insertions(+) diff --git a/arcade/arcade/cli/main.py b/arcade/arcade/cli/main.py index 437ca689..c67704c7 100644 --- a/arcade/arcade/cli/main.py +++ b/arcade/arcade/cli/main.py @@ -36,6 +36,7 @@ from arcade.cli.utils import ( load_eval_suites, log_engine_health, validate_and_get_config, + version_callback, ) cli = typer.Typer( @@ -475,3 +476,17 @@ def workerup( error_message = f"❌ Failed to start Arcade Worker: {escape(str(e))}" console.print(error_message, style="bold red") typer.Exit(code=1) + + +@cli.callback() +def version( + _: bool = typer.Option( + None, + "-v", + "--version", + callback=version_callback, + is_eager=True, + help="Print version and exit.", + ), +) -> None: + pass diff --git a/arcade/arcade/cli/utils.py b/arcade/arcade/cli/utils.py index fa68859c..1671e1f6 100644 --- a/arcade/arcade/cli/utils.py +++ b/arcade/arcade/cli/utils.py @@ -667,3 +667,13 @@ def parse_user_command(user_input: str) -> ChatCommand | None: return ChatCommand(user_input) except ValueError: return None + + +def version_callback(value: bool) -> None: + """Callback implementation for the `arcade --version`. + Prints the version of Arcade and exit. + """ + if value: + version = importlib.import_module("arcade").__version__ + console.print(f"[bold]Arcade[/bold] (version {version})") + exit()