34 lines
870 B
Python
34 lines
870 B
Python
from __future__ import annotations
|
|
|
|
from typing import Annotated
|
|
|
|
import typer
|
|
|
|
from {{ cookiecutter.package_name }}.cli.config import app as config_app
|
|
from {{ cookiecutter.package_name }}.cli.hello import app as hello_app
|
|
from {{ cookiecutter.package_name }}.utils.logging import setup_logging
|
|
|
|
app = typer.Typer(no_args_is_help=True)
|
|
app.add_typer(config_app, name="config")
|
|
app.add_typer(hello_app, name="hello")
|
|
|
|
|
|
@app.callback(invoke_without_command=True)
|
|
def main(
|
|
version: Annotated[
|
|
bool,
|
|
typer.Option("--version", "-v", help="Show version and exit."),
|
|
] = False,
|
|
) -> None:
|
|
"""Run the CLI application."""
|
|
setup_logging()
|
|
if version:
|
|
from importlib.metadata import version as get_version
|
|
|
|
print(get_version("{{ cookiecutter.project_slug }}"))
|
|
raise typer.Exit()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
app()
|