Edit on GitHub

communex.cli.root

 1from typing import Annotated, Optional
 2
 3import typer
 4
 5from communex import __version__
 6
 7from ._common import ExtraCtxData
 8from .balance import balance_app
 9from .key import key_app
10from .misc import misc_app
11from .module import module_app
12from .network import network_app
13from .subnet import subnet_app
14
15app = typer.Typer()
16
17app.add_typer(key_app, name="key", help="Key operations")
18app.add_typer(balance_app, name="balance", help="Balance operations")
19app.add_typer(misc_app, name="misc", help="Other operations")
20app.add_typer(module_app, name="module", help="Module operations")
21app.add_typer(network_app, name="network", help="Network operations")
22app.add_typer(subnet_app, name="subnet", help="Subnet operations")
23
24
25def _version_callback(value: bool):
26    if value:
27        print(f"CommuneX {__version__}")
28        raise typer.Exit()
29
30
31def flag_option(
32    flag: str,
33    flag_envvar: str,
34    flag_help: str,
35    flag_short: str | None = None,
36):
37    flag_long = f"--{flag}"
38    flag_short = f"-{flag[0]}" if flag_short is None else f"-{flag_short}"
39    return typer.Option(
40        flag_long,
41        flag_short,
42        is_flag=True,
43        envvar=flag_envvar,
44        help=flag_help
45    )
46
47
48@app.callback()
49def main(
50    ctx: typer.Context,
51    json: Annotated[bool, flag_option(
52        "json", "COMX_OUTPUT_JSON", "Output machine-readable JSON.")] = False,
53    testnet: Annotated[bool, flag_option(
54        "testnet", "COMX_USE_TESTNET", "Use testnet endpoints.")] = False,
55    yes_to_all: Annotated[bool, flag_option(
56        "yes", "COMX_YES_TO_ALL", "Say yes to all confirmation inputs.")] = False,
57    version: Annotated[Optional[bool], typer.Option(
58        callback=_version_callback)] = None,
59):
60    """
61    CommuneX CLI {version}
62
63    This command line interface is under development and subject to change.
64    """
65    # Pass the extra context data to the subcommands.
66    ctx.obj = ExtraCtxData(
67        output_json=json, use_testnet=testnet, yes_to_all=yes_to_all)
68
69
70if main.__doc__ is not None:
71    main.__doc__ = main.__doc__.format(version=__version__)
app = <typer.main.Typer object>
def flag_option( flag: str, flag_envvar: str, flag_help: str, flag_short: str | None = None):
32def flag_option(
33    flag: str,
34    flag_envvar: str,
35    flag_help: str,
36    flag_short: str | None = None,
37):
38    flag_long = f"--{flag}"
39    flag_short = f"-{flag[0]}" if flag_short is None else f"-{flag_short}"
40    return typer.Option(
41        flag_long,
42        flag_short,
43        is_flag=True,
44        envvar=flag_envvar,
45        help=flag_help
46    )
@app.callback()
def main( ctx: typer.models.Context, json: typing.Annotated[bool, <typer.models.OptionInfo object>] = False, testnet: typing.Annotated[bool, <typer.models.OptionInfo object>] = False, yes_to_all: typing.Annotated[bool, <typer.models.OptionInfo object>] = False, version: Annotated[Optional[bool], <typer.models.OptionInfo object>] = None):
49@app.callback()
50def main(
51    ctx: typer.Context,
52    json: Annotated[bool, flag_option(
53        "json", "COMX_OUTPUT_JSON", "Output machine-readable JSON.")] = False,
54    testnet: Annotated[bool, flag_option(
55        "testnet", "COMX_USE_TESTNET", "Use testnet endpoints.")] = False,
56    yes_to_all: Annotated[bool, flag_option(
57        "yes", "COMX_YES_TO_ALL", "Say yes to all confirmation inputs.")] = False,
58    version: Annotated[Optional[bool], typer.Option(
59        callback=_version_callback)] = None,
60):
61    """
62    CommuneX CLI {version}
63
64    This command line interface is under development and subject to change.
65    """
66    # Pass the extra context data to the subcommands.
67    ctx.obj = ExtraCtxData(
68        output_json=json, use_testnet=testnet, yes_to_all=yes_to_all)

CommuneX CLI 0.1.34.2

This command line interface is under development and subject to change.