save
This commit is contained in:
@@ -0,0 +1 @@
|
||||
from cic.cmd.arg import CmdCtrl
|
||||
|
||||
221
cic/cmd/arg.py
Normal file
221
cic/cmd/arg.py
Normal file
@@ -0,0 +1,221 @@
|
||||
# standard imports
|
||||
import importlib
|
||||
import logging
|
||||
import os
|
||||
import sys
|
||||
|
||||
# external imports
|
||||
import chainlib.eth.cli
|
||||
import cic.cmd.easy as cmd_easy
|
||||
import cic.cmd.export as cmd_export
|
||||
import cic.cmd.ext as cmd_ext
|
||||
import cic.cmd.init as cmd_init
|
||||
import cic.cmd.show as cmd_show
|
||||
from chainlib.chain import ChainSpec
|
||||
from cic.auth import PGPAuthCrypt
|
||||
from cic.crypt.aes import AESCTREncrypt
|
||||
from cic.http import HTTPSession, PGPClientSession
|
||||
|
||||
# local imports
|
||||
from cic.notify import NotifyWriter
|
||||
|
||||
notifier = NotifyWriter()
|
||||
logg = logging.getLogger(__name__)
|
||||
|
||||
script_dir = os.path.dirname(os.path.realpath(__file__))
|
||||
data_dir = os.path.join(script_dir, "..", "data")
|
||||
base_config_dir = os.path.join(data_dir, "config")
|
||||
|
||||
|
||||
class NullWriter:
|
||||
def notify(self, v):
|
||||
pass
|
||||
|
||||
def ouch(self, v):
|
||||
pass
|
||||
|
||||
def write(self, v):
|
||||
sys.stdout.write(str(v))
|
||||
|
||||
|
||||
class CmdCtrl:
|
||||
|
||||
__cmd_alias = {
|
||||
"u": "user",
|
||||
"t": "tag",
|
||||
}
|
||||
|
||||
__auth_for = [
|
||||
"user",
|
||||
]
|
||||
|
||||
def __init__(self, *_args, argv=None, _description=None, logger=None, **_kwargs):
|
||||
self.args(argv)
|
||||
|
||||
self.logging(logger)
|
||||
|
||||
self.module()
|
||||
|
||||
self.load_config()
|
||||
|
||||
self.notifier()
|
||||
|
||||
self.auth()
|
||||
|
||||
self.blockchain()
|
||||
|
||||
self.remote_openers = {}
|
||||
if self.get("META_URL") is not None:
|
||||
auth_client_session = PGPClientSession(self.__auth)
|
||||
self.remote_openers["meta"] = HTTPSession(
|
||||
self.get("META_URL"),
|
||||
auth=auth_client_session,
|
||||
origin=self.config.get("META_HTTP_ORIGIN"),
|
||||
)
|
||||
|
||||
def blockchain(self):
|
||||
self.chain_spec = ChainSpec.from_chain_str(self.config.get("CHAIN_SPEC"))
|
||||
self.rpc = chainlib.eth.cli.Rpc()
|
||||
self.__conn = self.rpc.connect_by_config(self.config)
|
||||
|
||||
def args(self, argv):
|
||||
self.argparser = chainlib.eth.cli.ArgumentParser(
|
||||
chainlib.eth.cli.argflag_std_read
|
||||
)
|
||||
sub = self.argparser.add_subparsers()
|
||||
sub.dest = "command"
|
||||
|
||||
sub_init = sub.add_parser("init", help="initialize new cic data directory")
|
||||
cmd_init.process_args(sub_init)
|
||||
|
||||
sub_show = sub.add_parser(
|
||||
"show", help="display summary of current state of cic data directory"
|
||||
)
|
||||
cmd_show.process_args(sub_show)
|
||||
|
||||
sub_export = sub.add_parser(
|
||||
"export", help="export cic data directory state to a specified target"
|
||||
)
|
||||
cmd_export.process_args(sub_export)
|
||||
|
||||
sub_ext = sub.add_parser("ext", help="extension helpers")
|
||||
cmd_ext.process_args(sub_ext)
|
||||
|
||||
sub_easy = sub.add_parser("easy", help="Easy Mode Contract Deployment")
|
||||
cmd_easy.process_args(sub_easy)
|
||||
|
||||
self.cmd_args = self.argparser.parse_args(argv)
|
||||
|
||||
def module(self):
|
||||
self.cmd_string = self.cmd_args.command
|
||||
cmd_string_translate = self.__cmd_alias.get(self.cmd_string)
|
||||
if cmd_string_translate is not None:
|
||||
self.cmd_string = cmd_string_translate
|
||||
|
||||
if self.cmd_string is None:
|
||||
self.cmd_string = "none"
|
||||
self.argparser.print_help()
|
||||
exit(1)
|
||||
|
||||
modname = f"cic.cmd.{self.cmd_string}"
|
||||
self.logger.debug(f"using module {modname}")
|
||||
self.cmd_mod = importlib.import_module(modname)
|
||||
|
||||
def logging(self, logger):
|
||||
self.logger = logger
|
||||
if self.logger is None:
|
||||
self.logger = logging.getLogger()
|
||||
if self.cmd_args.vv:
|
||||
self.logger.setLevel(logging.DEBUG)
|
||||
elif self.cmd_args.v:
|
||||
self.logger.setLevel(logging.INFO)
|
||||
|
||||
def load_config(self):
|
||||
override_dir = self.cmd_args.config
|
||||
if override_dir is None:
|
||||
p = os.environ.get("HOME")
|
||||
if p is not None:
|
||||
p = os.path.join(p, ".config", "cic", "cli")
|
||||
try:
|
||||
os.stat(p)
|
||||
override_dir = p
|
||||
logg.info(
|
||||
f"applying user config override from standard location: {p}"
|
||||
)
|
||||
except FileNotFoundError:
|
||||
pass
|
||||
extra_args = self.cmd_mod.extra_args()
|
||||
self.config = chainlib.eth.cli.Config.from_args(
|
||||
self.cmd_args,
|
||||
base_config_dir=base_config_dir,
|
||||
extra_args=extra_args,
|
||||
default_config_dir=override_dir,
|
||||
)
|
||||
|
||||
self.config.add(False, "_SEQ")
|
||||
|
||||
self.config.censor("AUTH_PASSPHRASE")
|
||||
|
||||
self.logger.debug(f"loaded config:\n{self.config}")
|
||||
|
||||
def auth(self):
|
||||
typ = self.get("AUTH_TYPE")
|
||||
if typ != "gnupg":
|
||||
raise NotImplementedError("Valid aut implementations are: gnupg")
|
||||
default_auth_db_path = None
|
||||
if os.environ.get("HOME") is not None:
|
||||
default_auth_db_path = os.path.join(
|
||||
os.environ["HOME"], ".local/share/cic/clicada"
|
||||
)
|
||||
auth_db_path = self.get("AUTH_DB_PATH", default_auth_db_path)
|
||||
self.__auth = PGPAuthCrypt(
|
||||
auth_db_path, self.get("AUTH_KEY"), self.get("AUTH_KEYRING_PATH")
|
||||
)
|
||||
self.__auth.get_secret(self.get("AUTH_PASSPHRASE"))
|
||||
self.encrypter = AESCTREncrypt(auth_db_path, self.__auth.secret)
|
||||
logg.debug(f"loaded auth: {self.__auth}")
|
||||
logg.debug(f"AUTH_PASSPHRASE: {self.get('AUTH_PASSPHRASE')}")
|
||||
logg.debug(f"AUTH_KEY: {self.get('AUTH_KEY')}")
|
||||
logg.debug(f"AUTH_DB_PATH: {self.get('AUTH_DB_PATH')}")
|
||||
logg.debug(f"AUTH_KEYRING_PATH: {self.get('AUTH_KEYRING_PATH')}")
|
||||
|
||||
def get(self, k, default=None):
|
||||
r = self.config.get(k, default)
|
||||
if k in [
|
||||
"_FORCE",
|
||||
]:
|
||||
if r is None:
|
||||
return False
|
||||
return self.config.true(k)
|
||||
return r
|
||||
|
||||
def chain(self):
|
||||
return self.chain_spec
|
||||
|
||||
def conn(self):
|
||||
return self.__conn
|
||||
|
||||
def execute(self):
|
||||
self.cmd_mod.execute(self)
|
||||
|
||||
def opener(self, k):
|
||||
return self.remote_openers[k]
|
||||
|
||||
def notifier(self):
|
||||
if logg.root.level >= logging.WARNING:
|
||||
logging.disable()
|
||||
self.writer = notifier
|
||||
else:
|
||||
self.writer = NullWriter()
|
||||
|
||||
def notify(self, v):
|
||||
self.writer.notify(v)
|
||||
|
||||
def ouch(self, v):
|
||||
self.writer.ouch(v)
|
||||
print()
|
||||
|
||||
def write(self, v):
|
||||
self.writer.write("")
|
||||
self.writer.write(v)
|
||||
print()
|
||||
293
cic/cmd/easy.py
293
cic/cmd/easy.py
@@ -1,9 +1,11 @@
|
||||
from __future__ import annotations
|
||||
|
||||
# standard import
|
||||
import importlib
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
import subprocess
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
import requests
|
||||
|
||||
@@ -18,6 +20,9 @@ from cic.meta import Meta
|
||||
from cic.network import Network
|
||||
from cic.token import Token
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from cic.cmd.arg import CmdCtrl
|
||||
from cic.actions.types import Options, Contract
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@@ -47,7 +52,17 @@ def process_args(argparser):
|
||||
)
|
||||
|
||||
|
||||
def validate_args(args):
|
||||
def extra_args():
|
||||
return {
|
||||
"path": "_TOKEN_PATH",
|
||||
"skip_gen": "_TOKEN_SKIP_GEN",
|
||||
"skip_deploy": "_TOKEN_SKIP_DEPLOY",
|
||||
"target": "_TOKEN_TARGET",
|
||||
"p": "RPC_PROVIDER",
|
||||
}
|
||||
|
||||
|
||||
def validate_args(_args):
|
||||
pass
|
||||
|
||||
|
||||
@@ -56,18 +71,6 @@ CONTRACTS = [
|
||||
"url": "https://gitlab.com/cicnet/eth-erc20/-/raw/master/python/giftable_erc20_token/data/GiftableToken",
|
||||
"name": "Giftable Token",
|
||||
},
|
||||
{
|
||||
"url": "https://gitlab.com/cicnet/erc20-demurrage-token/-/raw/master/python/erc20_demurrage_token/data/DemurrageTokenMultiCap",
|
||||
"name": "Demurrage Token Multi Cap (Might not work)",
|
||||
},
|
||||
{
|
||||
"url": "https://gitlab.com/cicnet/erc20-demurrage-token/-/raw/master/python/erc20_demurrage_token/data/DemurrageTokenMultiNocap",
|
||||
"name": "Demurrage Token Multi No Cap (Might not work)",
|
||||
},
|
||||
{
|
||||
"url": "https://gitlab.com/cicnet/erc20-demurrage-token/-/raw/master/python/erc20_demurrage_token/data/DemurrageTokenSingleCap",
|
||||
"name": "Demurrage Token Single Cap (Might not work)",
|
||||
},
|
||||
{
|
||||
"url": "https://gitlab.com/cicnet/erc20-demurrage-token/-/raw/master/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap",
|
||||
"name": "Demurrage Token Single No Cap",
|
||||
@@ -95,8 +98,8 @@ def get_contract_args(data: list):
|
||||
|
||||
|
||||
def print_contract_args(json_path: str):
|
||||
json_data = json.load(open(json_path))
|
||||
print(f"Contract Args:")
|
||||
json_data = json.load(open(json_path, encoding="utf-8"))
|
||||
print("Contract Args:")
|
||||
for contract_arg in get_contract_args(json_data):
|
||||
print(
|
||||
f"\t{contract_arg.get('name', '<no name>')} - {contract_arg.get('type', '<no type>')}"
|
||||
@@ -104,8 +107,8 @@ def print_contract_args(json_path: str):
|
||||
|
||||
|
||||
def select_contract():
|
||||
print(f"Contracts:")
|
||||
print(f"\t C - Custom (path/url to contract)")
|
||||
print("Contracts:")
|
||||
print("\t C - Custom (path/url to contract)")
|
||||
for idx, contract in enumerate(CONTRACTS):
|
||||
print(f"\t {idx} - {contract['name']}")
|
||||
|
||||
@@ -129,41 +132,40 @@ def select_contract():
|
||||
json_path = possible_json_path
|
||||
# possible_bin_location is url
|
||||
else:
|
||||
bin_path = download_file(contract["url"] + ".bin", directory)
|
||||
bin_path = download_file(possible_bin_location, directory)
|
||||
else:
|
||||
print("Invalid selection")
|
||||
exit(1)
|
||||
extra_args = []
|
||||
extra_args_types = []
|
||||
contract_extra_args = []
|
||||
contract_extra_args_types = []
|
||||
|
||||
if os.path.exists(json_path):
|
||||
json_data = json.load(open(json_path))
|
||||
json_data = json.load(open(json_path, encoding="utf-8"))
|
||||
for contract_arg in get_contract_args(json_data):
|
||||
arg_name = contract_arg.get("name")
|
||||
arg_type = contract_arg.get("type")
|
||||
if arg_name not in ["_decimals", "_name", "_symbol"]:
|
||||
val = input(f"Enter value for {arg_name} ({arg_type}): ")
|
||||
extra_args.append(val)
|
||||
extra_args_types.append(arg_type)
|
||||
contract_extra_args.append(val)
|
||||
if arg_type == "uint128":
|
||||
contract_extra_args_types.append("uint256")
|
||||
else:
|
||||
contract_extra_args_types.append(arg_type)
|
||||
|
||||
|
||||
return {
|
||||
"bin_path": bin_path,
|
||||
"json_path": json_path,
|
||||
"extra_args": extra_args,
|
||||
"extra_args_types": extra_args_types,
|
||||
"extra_args": contract_extra_args,
|
||||
"extra_args_types": contract_extra_args_types,
|
||||
}
|
||||
|
||||
|
||||
def init_token(
|
||||
directory: str,
|
||||
code="",
|
||||
extra_args=[],
|
||||
extra_args_types=[],
|
||||
):
|
||||
def init_token(directory: str, code=""):
|
||||
contract = select_contract()
|
||||
code = contract["bin_path"]
|
||||
extra_args = contract["extra_args"]
|
||||
extra_args_types = contract["extra_args_types"]
|
||||
contract_extra_args = contract["extra_args"]
|
||||
contract_extra_args_types = contract["extra_args_types"]
|
||||
|
||||
name = input("Enter Token Name (Foo Token): ") or "Foo Token"
|
||||
symbol = input("Enter Token Symbol (FOO): ") or "FOO"
|
||||
@@ -175,8 +177,8 @@ def init_token(
|
||||
name=name,
|
||||
symbol=symbol,
|
||||
precision=precision,
|
||||
extra_args=extra_args,
|
||||
extra_args_types=extra_args_types,
|
||||
extra_args=contract_extra_args,
|
||||
extra_args_types=contract_extra_args_types,
|
||||
supply=supply,
|
||||
code=code,
|
||||
)
|
||||
@@ -230,8 +232,30 @@ def init_attachment(directory):
|
||||
return contract_attchment
|
||||
|
||||
|
||||
def load_contract(directory) -> Contract:
|
||||
token = Token(path=directory)
|
||||
proof = Proof(path=directory)
|
||||
meta = Meta(path=directory)
|
||||
attachment = Attachment(path=directory)
|
||||
network = Network(directory)
|
||||
|
||||
token.load()
|
||||
proof.load()
|
||||
meta.load()
|
||||
attachment.load()
|
||||
network.load()
|
||||
return Contract(
|
||||
token=token, proof=proof, meta=meta, attachment=attachment, network=network
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def init_network(
|
||||
directory, registry_address,key_account_address, chain_spec, rpc_provider, targets=["eth"]
|
||||
directory,
|
||||
options: Options,
|
||||
targets=["eth"],
|
||||
):
|
||||
contract_network = Network(directory, targets=targets)
|
||||
contract_network.start()
|
||||
@@ -240,17 +264,19 @@ def init_network(
|
||||
m = importlib.import_module(f"cic.ext.{target}.start")
|
||||
m.extension_start(
|
||||
contract_network,
|
||||
registry_address=registry_address,
|
||||
chain_spec=chain_spec,
|
||||
rpc_provider=rpc_provider,
|
||||
key_account_address=key_account_address
|
||||
registry_address=options.contract_registry,
|
||||
chain_spec=options.chain_spec,
|
||||
rpc_provider=options.rpc_provider,
|
||||
key_account_address=options.key_account,
|
||||
)
|
||||
contract_network.load()
|
||||
return contract_network
|
||||
|
||||
|
||||
def execute(config, eargs):
|
||||
directory = eargs.path
|
||||
|
||||
|
||||
|
||||
def generate(directory: str, target: str, options: Options) -> Contract:
|
||||
if os.path.exists(directory):
|
||||
contine = input(
|
||||
"Directory already exists, Would you like to delete it? (y/n): "
|
||||
@@ -261,77 +287,119 @@ def execute(config, eargs):
|
||||
else:
|
||||
print(f"Deleted {directory}")
|
||||
os.system(f"rm -rf {directory}")
|
||||
target = eargs.target
|
||||
if not eargs.skip_gen:
|
||||
os.makedirs(directory)
|
||||
# Defaults
|
||||
default_contract_registry = config.get(
|
||||
"CIC_CONTRACT_REGISTRY_ADDRESS",
|
||||
"0xcf60ebc445b636a5ab787f9e8bc465a2a3ef8299",
|
||||
)
|
||||
default_key_account = config.get(
|
||||
"CIC_KEY_ACCOUNT_ADDRESS", "eb3907ecad74a0013c259d5874ae7f22dcbcc95c"
|
||||
)
|
||||
default_metadata_endpoint = "http://localhost:63380" or config.get(
|
||||
"META_ENDPOINT", "http://localhost:63380"
|
||||
)
|
||||
default_wallet_keyfile = config.get(
|
||||
"WALLET_KEY_FILE",
|
||||
"/home/will/grassroots/cic-internal-integration/apps/cic-ussd/tests/data/pgp/privatekeys_meta.asc",
|
||||
)
|
||||
default_wallet_passphrase = config.get("WALLET_PASSPHRASE", "merman")
|
||||
os.makedirs(directory)
|
||||
|
||||
default_chain_spec = config.get("CHAIN_SPEC", "evm:byzantium:8996:bloxberg")
|
||||
default_rpc_provider = config.get("RPC_PROVIDER", "http://localhost:63545")
|
||||
token = init_token(directory)
|
||||
proof = init_proof(directory)
|
||||
meta = init_meta(directory)
|
||||
attachment = init_attachment(directory)
|
||||
network = init_network(
|
||||
directory,
|
||||
options,
|
||||
targets=[target],
|
||||
)
|
||||
return Contract(
|
||||
token=token, proof=proof, meta=meta, attachment=attachment, network=network
|
||||
)
|
||||
|
||||
# Options
|
||||
contract_registry = (
|
||||
input(f"Enter Contract Registry ({default_contract_registry}): ")
|
||||
or default_contract_registry
|
||||
)
|
||||
rpc_provider = (
|
||||
input(f"Enter RPC Provider ({default_rpc_provider}): ")
|
||||
or default_rpc_provider
|
||||
)
|
||||
chain_spec = ChainSpec.from_chain_str(
|
||||
(input(f"Enter ChainSpec ({default_chain_spec}): ") or default_chain_spec)
|
||||
)
|
||||
key_account = (
|
||||
input(f"Enter KeyAccount ({default_key_account}): ") or default_key_account
|
||||
)
|
||||
metadata_endpoint = (
|
||||
input(f"Enter Metadata Endpoint ({default_metadata_endpoint}): ")
|
||||
or default_metadata_endpoint
|
||||
)
|
||||
|
||||
token = init_token(directory)
|
||||
proof = init_proof(directory)
|
||||
meta = init_meta(directory)
|
||||
attachment = init_attachment(directory)
|
||||
network = init_network(
|
||||
directory,
|
||||
registry_address=contract_registry,
|
||||
key_account_address=key_account,
|
||||
chain_spec=chain_spec,
|
||||
rpc_provider=rpc_provider,
|
||||
targets=[target],
|
||||
)
|
||||
print(f"[cic.header]\nversion = {proof.version()}\n")
|
||||
print(f"[cic.token]\n{token}")
|
||||
print(f"[cic.proof]\n{proof}")
|
||||
print(f"[cic.meta]\n{meta}")
|
||||
print(f"[cic.attachment]\n{attachment}")
|
||||
print(f"[cic.network]\n{network}")
|
||||
if not eargs.skip_deploy:
|
||||
def get_options(ctrl: CmdCtrl) -> Options:
|
||||
# Defaults
|
||||
default_contract_registry = ctrl.config.get(
|
||||
"CIC_REGISTRY_ADDRESS",
|
||||
"0xcf60ebc445b636a5ab787f9e8bc465a2a3ef8299", # Comes from /home/will/grassroots/cic-staff-installer/var/cic-staff-client/CIC_REGISTRY_ADDRESS
|
||||
)
|
||||
default_key_account = ctrl.config.get(
|
||||
"AUTH_KEY",
|
||||
"eb3907ecad74a0013c259d5874ae7f22dcbcc95c", # comes from wallet `eth-keyfile -z -d $WALLET_KEY_FILE`
|
||||
)
|
||||
# https://meta.grassrootseconomics.net
|
||||
# https://auth.grassrootseconomics.net Authenticated Meta
|
||||
|
||||
default_metadata_endpoint = ctrl.config.get("META_URL", "https://auth.grassecon.net")
|
||||
# Keyring folder needs to be dumped out as a private key file from $HOME/.config/cic/staff-client/.gnupg
|
||||
default_wallet_keyfile = ctrl.config.get(
|
||||
"WALLET_KEY_FILE",
|
||||
"/home/will/grassroots/cic-internal-integration/apps/cic-ussd/tests/data/pgp/privatekeys_meta.asc",
|
||||
) # Show possible wallet keys
|
||||
|
||||
# Should be an input???
|
||||
default_wallet_passphrase = ctrl.config.get("WALLET_PASSPHRASE", "merman")
|
||||
|
||||
default_chain_spec = ctrl.config.get("CHAIN_SPEC", "evm:byzantium:8996:bloxberg")
|
||||
default_rpc_provider = ctrl.config.get(
|
||||
"RPC_PROVIDER", "https://rpc.grassecon.net"
|
||||
)
|
||||
contract_registry = (
|
||||
input(f"Enter Contract Registry ({default_contract_registry}): ")
|
||||
or default_contract_registry
|
||||
)
|
||||
rpc_provider = (
|
||||
input(f"Enter RPC Provider ({default_rpc_provider}): ") or default_rpc_provider
|
||||
)
|
||||
chain_spec = ChainSpec.from_chain_str(
|
||||
(input(f"Enter ChainSpec ({default_chain_spec}): ") or default_chain_spec)
|
||||
)
|
||||
key_account = (
|
||||
input(f"Enter KeyAccount ({default_key_account}): ") or default_key_account
|
||||
)
|
||||
metadata_endpoint = (
|
||||
input(f"Enter Metadata Endpoint ({default_metadata_endpoint}): ")
|
||||
or default_metadata_endpoint
|
||||
)
|
||||
auth_passphrase = ctrl.config.get(
|
||||
"AUTH_PASSPHRASE"
|
||||
)
|
||||
auth_keyfile_path = ctrl.config.get(
|
||||
"AUTH_KEYFILE_PATH"
|
||||
)
|
||||
auth_db_path = ctrl.config.get("AUTH_DB_PATH")
|
||||
return Options(
|
||||
auth_db_path,
|
||||
auth_keyfile_path,
|
||||
auth_passphrase,
|
||||
contract_registry,
|
||||
key_account,
|
||||
chain_spec,
|
||||
rpc_provider,
|
||||
metadata_endpoint,
|
||||
default_wallet_keyfile,
|
||||
default_wallet_passphrase,
|
||||
)
|
||||
|
||||
|
||||
def print_contract(contract: Contract):
|
||||
print(f"[cic.header]\nversion = {contract.proof.version()}\n")
|
||||
print(f"[cic.token]\n{contract.token}")
|
||||
print(f"[cic.proof]\n{contract.proof}")
|
||||
print(f"[cic.meta]\n{contract.meta}")
|
||||
print(f"[cic.attachment]\n{contract.attachment}")
|
||||
print(f"[cic.network]\n{contract.network}")
|
||||
|
||||
|
||||
def execute(ctrl: CmdCtrl):
|
||||
directory = ctrl.config.get("_TOKEN_PATH")
|
||||
target = ctrl.config.get("_TOKEN_TARGET")
|
||||
skip_gen = ctrl.config.get("_TOKEN_SKIP_GEN")
|
||||
skip_deploy = ctrl.config.get("_TOKEN_SKIP_DEPLOY")
|
||||
|
||||
options = get_options(ctrl)
|
||||
|
||||
if not skip_gen:
|
||||
contract = generate(directory, target, options)
|
||||
else:
|
||||
contract = load_contract(directory)
|
||||
|
||||
print_contract(contract)
|
||||
|
||||
if not skip_deploy:
|
||||
ready_to_deploy = input("Ready to deploy? (y/n): ")
|
||||
if ready_to_deploy == "y":
|
||||
deploy(
|
||||
config,
|
||||
ctrl=ctrl,
|
||||
contract_directory=directory,
|
||||
gpg_passphrase=default_wallet_passphrase,
|
||||
key_file_path=default_wallet_keyfile,
|
||||
metadata_endpoint=metadata_endpoint,
|
||||
keystore_directory="/home/will/grassroots/cic-internal-integration/apps/contract-migration/keystore",
|
||||
options=options,
|
||||
keystore_directory="/home/will/grassroots/cic-internal-integration/apps/contract-migration/keystore", # Meta Signer meta.ge.net but not auth.ge.net(usumbufu determins if you can even interact with the server) and this ensures data integrity
|
||||
target=target,
|
||||
)
|
||||
print("Deployed")
|
||||
@@ -339,13 +407,6 @@ def execute(config, eargs):
|
||||
print("Not deploying")
|
||||
|
||||
|
||||
#
|
||||
#
|
||||
# rpc="http://localhost:63545"
|
||||
|
||||
# python -m cic.runnable.cic_cmd init --target eth --name "$token_name" --symbol $token_symbol --precision 6 $token_symbol_lowercase
|
||||
|
||||
# python -m cic.runnable.cic_cmd ext -p $rpc -i $chain_spec --registry $contract_registry -d $token_symbol_lowercase eth -vv
|
||||
# python -m cic.runnable.cic_cmd export -p $rpc --metadata-endpoint http://localhost:63380 -vv -y /home/will/grassroots/cic-internal-integration/apps/contract-migration/keystore -o $token_symbol_lowercase/out -d $token_symbol_lowercase eth
|
||||
if __name__ == "__main__":
|
||||
execute()
|
||||
# execute()
|
||||
print("Not Implemented")
|
||||
|
||||
Reference in New Issue
Block a user