mirror of https://github.com/nucypher/nucypher.git
101 lines
2.7 KiB
Python
101 lines
2.7 KiB
Python
import code
|
|
import readline
|
|
import rlcompleter
|
|
|
|
import click
|
|
|
|
from nucypher.blockchain.eth import domains
|
|
from nucypher.blockchain.eth.agents import (
|
|
ContractAgency,
|
|
CoordinatorAgent,
|
|
SubscriptionManagerAgent,
|
|
TACoApplicationAgent,
|
|
TACoChildApplicationAgent,
|
|
)
|
|
from nucypher.blockchain.eth.registry import ContractRegistry
|
|
from nucypher.utilities.emitters import StdoutEmitter
|
|
from nucypher.utilities.logging import GlobalLoggerSettings
|
|
|
|
# Get an interactive Python session with all the NuCypher agents loaded by running:
|
|
# python scripts/hooks/nucypher_agents.py [OPTIONS]
|
|
|
|
GlobalLoggerSettings.start_console_logging()
|
|
|
|
emitter = StdoutEmitter(verbosity=2)
|
|
|
|
|
|
@click.command()
|
|
@click.option(
|
|
"--domain",
|
|
"domain",
|
|
help="TACo domain",
|
|
type=click.Choice(list(domains.SUPPORTED_DOMAINS)),
|
|
default=str(domains.LYNX),
|
|
)
|
|
@click.option(
|
|
"--eth-endpoint",
|
|
"eth_endpoint",
|
|
help="ETH staking network provider URI",
|
|
type=click.STRING,
|
|
required=True,
|
|
)
|
|
@click.option(
|
|
"--polygon-endpoint",
|
|
"polygon_endpoint",
|
|
help="Polygon network provider URI",
|
|
type=click.STRING,
|
|
required=True,
|
|
)
|
|
def nucypher_agents(
|
|
domain,
|
|
eth_endpoint,
|
|
polygon_endpoint,
|
|
):
|
|
domain = domains.get_domain(str(domain))
|
|
registry = ContractRegistry.from_latest_publication(domain=domain)
|
|
emitter.echo(f"NOTICE: Connecting to {domain} domain", color="yellow")
|
|
|
|
taco_application_agent = ContractAgency.get_agent(
|
|
agent_class=TACoApplicationAgent,
|
|
registry=registry,
|
|
blockchain_endpoint=eth_endpoint,
|
|
) # type: TACoApplicationAgent
|
|
|
|
taco_child_application_agent = ContractAgency.get_agent(
|
|
agent_class=TACoChildApplicationAgent,
|
|
registry=registry,
|
|
blockchain_endpoint=polygon_endpoint,
|
|
) # type: TACoChildApplicationAgent
|
|
|
|
coordinator_agent = ContractAgency.get_agent(
|
|
agent_class=CoordinatorAgent,
|
|
registry=registry,
|
|
blockchain_endpoint=polygon_endpoint,
|
|
) # type: CoordinatorAgent
|
|
|
|
subscription_manager_agent = ContractAgency.get_agent(
|
|
agent_class=SubscriptionManagerAgent,
|
|
registry=registry,
|
|
blockchain_endpoint=polygon_endpoint,
|
|
) # type: SubscriptionManagerAgent
|
|
|
|
message = (
|
|
"TACo agents pre-loaded in variables:\n"
|
|
"\t'taco_application_agent'\n"
|
|
"\t'taco_child_application_agent'\n"
|
|
"\t'coordinator_agent'\n"
|
|
"\t'subscription_manager_agent'"
|
|
)
|
|
emitter.echo(message=message, color="green")
|
|
|
|
# set up auto-completion
|
|
readline.set_completer(rlcompleter.Completer(locals()).complete)
|
|
readline.parse_and_bind("tab: complete")
|
|
|
|
# start interactive shell
|
|
code.interact(local=locals())
|
|
|
|
|
|
if __name__ == "__main__":
|
|
nucypher_agents()
|