1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
from __future__ import annotations
from pathlib import Path
from click import Context, group, option, pass_context
from click import Path as ClickPath
from ._utils import LitestarEnv, LitestarExtensionGroup
from .commands import core, schema, sessions
__all__ = ("litestar_group",)
@group(cls=LitestarExtensionGroup, context_settings={"help_option_names": ["-h", "--help"]})
@option("--app", "app_path", help="Module path to a Litestar application")
@option(
"--app-dir",
help="Look for APP in the specified directory, by adding this to the PYTHONPATH. Defaults to the current working directory.",
default=None,
type=ClickPath(dir_okay=True, file_okay=False, path_type=Path),
show_default=False,
)
@pass_context
def litestar_group(ctx: Context, app_path: str | None, app_dir: Path | None = None) -> None:
"""Litestar CLI."""
if ctx.obj is None: # env has not been loaded yet, so we can lazy load it
ctx.obj = lambda: LitestarEnv.from_env(app_path, app_dir=app_dir)
# add sub commands here
litestar_group.add_command(core.info_command)
litestar_group.add_command(core.run_command)
litestar_group.add_command(core.routes_command)
litestar_group.add_command(core.version_command)
litestar_group.add_command(sessions.sessions_group)
litestar_group.add_command(schema.schema_group)
|