33import typing as t
44
55import click
6+ import ellar
67import typer
78from ellar .common .commands import EllarTyper
89from ellar .common .constants import CALLABLE_COMMAND_INFO , MODULE_METADATA
1112from ellar .core .services import Reflector
1213from typer .models import CommandInfo
1314
15+ import ellar_cli
1416from ellar_cli .constants import ELLAR_META
1517
1618from .manage_commands import create_module , create_project , new_command , runserver
2729_typer .command (name = "create-module" )(create_module )
2830
2931
32+ def version_callback (value : bool ) -> None :
33+ if value :
34+ click .echo ("===========================================================" )
35+ click .echo (f"Ellar CLI Version: { ellar_cli .__version__ } " )
36+ click .echo ("-----------------------------------------------------------" )
37+ click .echo (f"Ellar Version: { ellar .__version__ } " )
38+ click .echo ("===========================================================" )
39+ raise typer .Exit (0 )
40+
41+
3042@_typer .callback ()
3143def typer_callback (
3244 ctx : typer .Context ,
@@ -38,6 +50,14 @@ def typer_callback(
3850 exists = True ,
3951 help = "Run Specific Command on a specific project" ,
4052 ),
53+ version : t .Optional [bool ] = typer .Option (
54+ ...,
55+ "-v" ,
56+ "--version" ,
57+ callback = version_callback ,
58+ is_flag = True ,
59+ help = "CLI Version" ,
60+ ),
4161) -> None :
4262 meta_ : t .Optional [EllarCLIService ] = EllarCLIService .import_project_meta (project )
4363 ctx .meta [ELLAR_META ] = meta_
@@ -49,8 +69,8 @@ def build_typers() -> t.Any: # pragma: no cover
4969 argv = list (sys .argv )
5070 options , args = getopt .getopt (
5171 argv [1 :],
52- "hp :" ,
53- ["project=" , "help" ],
72+ "hpv :" ,
73+ ["project=" , "help" , "version" ],
5474 )
5575 for k , v in options :
5676 if k in ["-p" , "--project" ] and v :
0 commit comments