Skip to content

Cli

erpc.cli

Command-line interface for erpc.py.

Provides erpc-py CLI with subcommands for managing eRPC instances.

PID_FILE module-attribute

PID_FILE = '/tmp/erpc-py.pid'

Default PID file path for process tracking.

DEFAULT_HEALTH_URL module-attribute

DEFAULT_HEALTH_URL = 'http://127.0.0.1:4000/'

Default URL for health checks.

DEFAULT_METRICS_URL module-attribute

DEFAULT_METRICS_URL = 'http://127.0.0.1:4001/metrics'

Default URL for metrics endpoint.

build_parser

build_parser() -> argparse.ArgumentParser

Build the argument parser for the erpc-py CLI.

Returns:

Type Description
ArgumentParser

Configured argument parser with all subcommands.

Source code in erpc/cli.py
def build_parser() -> argparse.ArgumentParser:
    """Build the argument parser for the erpc-py CLI.

    Returns:
        Configured argument parser with all subcommands.

    """
    parser = argparse.ArgumentParser(
        prog="erpc-py",
        description="Python CLI for managing eRPC — fault-tolerant EVM RPC proxy",
    )
    subparsers = parser.add_subparsers(dest="command", required=True)

    # ── version ───────────────────────────────────────────────────────────
    version_parser = subparsers.add_parser("version", help="Show version information")
    version_parser.set_defaults(func=_cmd_version)

    # ── health ────────────────────────────────────────────────────────────
    health_parser = subparsers.add_parser("health", help="Check eRPC health status")
    health_parser.add_argument("--url", default=DEFAULT_HEALTH_URL, help="Health endpoint URL")
    health_parser.set_defaults(func=_cmd_health)

    # ── metrics ───────────────────────────────────────────────────────────
    metrics_parser = subparsers.add_parser("metrics", help="Display runtime metrics")
    metrics_parser.add_argument("--url", default=DEFAULT_METRICS_URL, help="Metrics endpoint URL")
    metrics_parser.set_defaults(func=_cmd_metrics)

    # ── config ────────────────────────────────────────────────────────────
    config_parser = subparsers.add_parser("config", help="Configuration management")
    config_sub = config_parser.add_subparsers(dest="config_command", required=True)

    gen_parser = config_sub.add_parser("generate", help="Generate eRPC config file")
    gen_parser.add_argument(
        "--chains", required=True, help="Comma-separated chain IDs (e.g., 1,137)"
    )
    gen_parser.add_argument("--upstreams", required=True, help="Comma-separated upstream URLs")
    gen_parser.add_argument("--output", help="Output file path (default: stdout)")
    gen_parser.set_defaults(func=_cmd_config_generate)

    # ── install ───────────────────────────────────────────────────────────
    install_parser = subparsers.add_parser("install", help="Install eRPC binary")
    install_parser.add_argument("--version", required=True, help="eRPC version to install")
    install_parser.add_argument("--dir", default="/usr/local/bin", help="Installation directory")
    install_parser.set_defaults(func=_cmd_install)

    # ── start ─────────────────────────────────────────────────────────────
    start_parser = subparsers.add_parser("start", help="Start eRPC with config")
    start_parser.add_argument("--config", required=True, help="Path to eRPC config file")
    start_parser.add_argument("--port", type=int, help="Override server port")
    start_parser.set_defaults(func=_cmd_start)

    # ── stop ──────────────────────────────────────────────────────────────
    stop_parser = subparsers.add_parser("stop", help="Gracefully stop eRPC")
    stop_parser.set_defaults(func=_cmd_stop)

    return parser

main

main() -> None

CLI entry point.

Source code in erpc/cli.py
def main() -> None:
    """CLI entry point."""
    parser = build_parser()
    args = parser.parse_args()
    rc = args.func(args)
    sys.exit(rc)