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