diff --git a/src/crewai/cli/cli.py b/src/crewai/cli/cli.py index ff633f668..8bec5af45 100644 --- a/src/crewai/cli/cli.py +++ b/src/crewai/cli/cli.py @@ -1,4 +1,5 @@ import click +import pkg_resources from .create_crew import create_crew @@ -15,5 +16,22 @@ def create(project_name): create_crew(project_name) +@crewai.command() +@click.option( + "--tools", is_flag=True, help="Show the installed version of crewai tools" +) +def version(tools): + """Show the installed version of crewai.""" + crewai_version = pkg_resources.get_distribution("crewai").version + click.echo(f"crewai version: {crewai_version}") + + if tools: + try: + tools_version = pkg_resources.get_distribution("crewai[tools]").version + click.echo(f"crewai tools version: {tools_version}") + except pkg_resources.DistributionNotFound: + click.echo("crewai tools not installed") + + if __name__ == "__main__": crewai() diff --git a/tests/cli_test.py b/tests/cli_test.py new file mode 100644 index 000000000..88247ec69 --- /dev/null +++ b/tests/cli_test.py @@ -0,0 +1,20 @@ +from click.testing import CliRunner +from crewai.cli.cli import version + + +def test_version_command(): + runner = CliRunner() + result = runner.invoke(version) + assert result.exit_code == 0 + assert "crewai version:" in result.output + + +def test_version_command_with_tools(): + runner = CliRunner() + result = runner.invoke(version, ["--tools"]) + assert result.exit_code == 0 + assert "crewai version:" in result.output + assert ( + "crewai tools version:" in result.output + or "crewai tools not installed" in result.output + )