Source code for stormlog.entrypoint

"""Top-level Stormlog console entrypoint."""

from __future__ import annotations

import argparse
import sys
from typing import Sequence


[docs] def main(argv: Sequence[str] | None = None) -> int: """Dispatch the `stormlog` console script.""" resolved_argv = list(sys.argv[1:] if argv is None else argv) if not resolved_argv: from .tui import run_app run_app() return 0 command = resolved_argv[0] if command == "tui": if len(resolved_argv) > 1: tui_parser = argparse.ArgumentParser( prog="stormlog tui", description="Launch the Stormlog Textual TUI.", ) tui_parser.parse_args(resolved_argv[1:]) from .tui import run_app run_app() return 0 if command == "infer": from .infer.cli import main as infer_main return infer_main(resolved_argv[1:]) if command == "query": from .query_cli import main as query_main return query_main(resolved_argv[1:]) if command in {"-h", "--help"}: _build_parser().print_help() return 0 parser = _build_parser() parser.error(f"unknown command: {command}")
def _build_parser() -> argparse.ArgumentParser: parser = argparse.ArgumentParser( prog="stormlog", description=( "Stormlog command surface. Running `stormlog` with no arguments " "opens the Textual TUI." ), ) parser.add_argument( "command", nargs="?", choices=["tui", "query", "infer"], help="Command group. Omit to launch the TUI.", ) return parser if __name__ == "__main__": raise SystemExit(main())