Source code for mini_arcade.main
"""
Mini Arcade CLI entry point.
"""
from __future__ import annotations
import sys
from pathlib import Path
from typing import Optional
import mini_arcade.modules as commands_pkg
from mini_arcade.app import MiniArcadeCLI
from mini_arcade.cli.cli import CLIConfig, GlobalParserBuilder
from mini_arcade.constants import APP, CLI
from mini_arcade.utils.module_loader import load_command_packages
[docs]
def main(argv: Optional[list[str]] = None):
"""
Main entry point for the Mini Arcade CLI.
:param argv: Optional list of command-line arguments. If None, uses sys.argv[1:].
:type argv: Optional[list[str]]
:raises SystemExit: Exits with the appropriate exit code after running the command.
"""
if argv is None:
argv = sys.argv[1:]
global_parser = GlobalParserBuilder.build_global_parser(
APP.version,
)
remaining_argv: list[str]
_, remaining_argv = global_parser.parse_known_args(argv)
commands_dir = Path(commands_pkg.__file__).parent
print(commands_dir)
load_command_packages(
base_namespace="mini_arcade.modules",
base_dir=commands_dir,
)
cli_app = MiniArcadeCLI(
config=CLIConfig(
app_name=CLI.executable_name,
description=CLI.description,
usage=CLI.usage,
parents=[global_parser],
),
)
args = cli_app.parse_args(remaining_argv)
exit_code = cli_app.run_command(args)
raise SystemExit(exit_code)
if __name__ == "__main__":
main()