Skip to content

pearl_cmd

pearl_cmd

jarvis pearl — thin wrappers around Pearl's native CLIs.

Functions

pearl

pearl() -> None

Access Pearl node, wallet, and RPC tools.

Source code in src/openjarvis/cli/pearl_cmd.py
@click.group()
def pearl() -> None:
    """Access Pearl node, wallet, and RPC tools."""

doctor

doctor(pearl_home: str | None) -> None

Show whether Pearl native binaries are discoverable.

Source code in src/openjarvis/cli/pearl_cmd.py
@pearl.command("doctor")
@click.option("--pearl-home", type=click.Path(file_okay=False), default=None)
def doctor(pearl_home: str | None) -> None:
    """Show whether Pearl native binaries are discoverable."""
    click.echo("Pearl CLI Doctor")
    for name in ("pearld", "oyster", "prlctl"):
        binary = _resolve_binary(name, pearl_home)
        if binary:
            click.echo(f"  {name:<8} {binary} OK")
        else:
            click.echo(f"  {name:<8} not found FAIL")
    click.echo("Set PEARL_HOME=/path/to/pearl if binaries are not on PATH.")

node

node(ctx: Context, pearl_home: str | None, args: tuple[str, ...]) -> None

Run pearld with pass-through arguments.

Source code in src/openjarvis/cli/pearl_cmd.py
@pearl.command("node", context_settings=PASSTHROUGH)
@click.option("--pearl-home", type=click.Path(file_okay=False), default=None)
@click.argument("args", nargs=-1, type=click.UNPROCESSED)
@click.pass_context
def node(ctx: click.Context, pearl_home: str | None, args: tuple[str, ...]) -> None:
    """Run ``pearld`` with pass-through arguments."""
    ctx.exit(_run("pearld", args, pearl_home))

wallet

wallet(ctx: Context, pearl_home: str | None, args: tuple[str, ...]) -> None

Run oyster with pass-through arguments.

Source code in src/openjarvis/cli/pearl_cmd.py
@pearl.command("wallet", context_settings=PASSTHROUGH)
@click.option("--pearl-home", type=click.Path(file_okay=False), default=None)
@click.argument("args", nargs=-1, type=click.UNPROCESSED)
@click.pass_context
def wallet(ctx: click.Context, pearl_home: str | None, args: tuple[str, ...]) -> None:
    """Run ``oyster`` with pass-through arguments."""
    ctx.exit(_run("oyster", args, pearl_home))

ctl

ctl(ctx: Context, pearl_home: str | None, args: tuple[str, ...]) -> None

Run prlctl with pass-through arguments.

Source code in src/openjarvis/cli/pearl_cmd.py
@pearl.command("ctl", context_settings=PASSTHROUGH)
@click.option("--pearl-home", type=click.Path(file_okay=False), default=None)
@click.argument("args", nargs=-1, type=click.UNPROCESSED)
@click.pass_context
def ctl(ctx: click.Context, pearl_home: str | None, args: tuple[str, ...]) -> None:
    """Run ``prlctl`` with pass-through arguments."""
    ctx.exit(_run("prlctl", args, pearl_home))

address

address(pearl_home: str | None, user: str, password: str, server: str, notls: bool, skipverify: bool) -> None

Generate a Pearl wallet address through Oyster's wallet RPC.

Source code in src/openjarvis/cli/pearl_cmd.py
@pearl.command("address")
@click.option("--pearl-home", type=click.Path(file_okay=False), default=None)
@click.option("-u", "--user", default="rpcuser", show_default=True)
@click.option("-P", "--password", default="rpcpass", show_default=True)
@click.option("-s", "--server", default="localhost:44207", show_default=True)
@click.option("--notls/--tls", default=True, show_default=True)
@click.option("--skipverify/--verify", default=True, show_default=True)
def address(
    pearl_home: str | None,
    user: str,
    password: str,
    server: str,
    notls: bool,
    skipverify: bool,
) -> None:
    """Generate a Pearl wallet address through Oyster's wallet RPC."""
    args = ["--wallet", "-u", user, "-P", password, "-s", server]
    if notls:
        args.append("--notls")
    elif skipverify:
        args.append("--skipverify")
    args.append("getnewaddress")

    completed = _run_capture("prlctl", tuple(args), pearl_home)
    if completed.stdout:
        click.echo(completed.stdout.rstrip())
    if completed.stderr:
        click.echo(completed.stderr.rstrip(), err=True)
    if completed.returncode:
        raise click.ClickException(f"prlctl exited with {completed.returncode}")