cic-cli/cic/cmd/wizard.py

103 lines
2.6 KiB
Python
Raw Normal View History

from __future__ import annotations
# standard import
import logging
2022-04-26 14:01:52 +02:00
import os
2022-04-26 13:03:38 +02:00
2022-03-01 14:38:17 +01:00
from chainlib.cli.config import Config
# local imports
2022-03-01 14:38:17 +01:00
from cic.contract.contract import deploy_contract, generate_contract, load_contract
2022-04-26 13:03:38 +02:00
from cic.contract.csv import load_contract_from_csv
log = logging.getLogger(__name__)
def process_args(argparser):
argparser.add_argument(
"--skip-gen", action="store_true", default=False, help="Skip Generation"
)
argparser.add_argument(
"--skip-deploy",
action="store_true",
help="Skip Deployment",
)
2022-04-26 13:03:38 +02:00
argparser.add_argument(
"--csv",
help="Load Voucher from CSV",
)
argparser.add_argument(
"--target",
default="eth",
help="Contract Target (eth)",
)
argparser.add_argument(
"path",
type=str,
help="Path to generate/use contract deployment info",
)
argparser.add_argument(
"-p",
type=str,
help="RPC Provider (http://localhost:8545)",
)
argparser.add_argument(
"-y",
type=str,
help="Wallet Keystore",
)
def validate_args(_args):
pass
2022-04-26 13:03:38 +02:00
def execute(
config: Config,
eargs,
):
directory = eargs.path
target = eargs.target
skip_gen = eargs.skip_gen
skip_deploy = eargs.skip_deploy
2022-03-01 14:38:17 +01:00
wallet_keystore = eargs.y
2022-04-26 13:03:38 +02:00
csv_file = eargs.csv
2022-03-01 15:06:01 +01:00
if wallet_keystore:
config.add(wallet_keystore, "WALLET_KEY_FILE", exists_ok=True)
2022-04-26 14:01:52 +02:00
if skip_gen:
contract = load_contract(directory)
else:
if os.path.exists(directory):
raise Exception(f"Directory {directory} already exists")
2022-04-26 13:03:38 +02:00
if csv_file:
2022-04-26 14:01:52 +02:00
print(f"Generating from csv:{csv_file} to {directory}")
2022-04-26 13:03:38 +02:00
contract = load_contract_from_csv(config, directory, csv_file)
else:
2022-04-26 14:01:52 +02:00
print("Using Interactive Mode")
2022-04-26 13:03:38 +02:00
contract = generate_contract(directory, [target], config, interactive=True)
2022-03-01 09:17:17 +01:00
print(contract)
2022-03-07 10:25:45 +01:00
print(f"Meta: {config.get('META_URL')}")
print(f"ChainSpec: {config.get('CHAIN_SPEC', contract.network.chain_spec(target))}")
print(f"RPC: {config.get('RPC_PROVIDER')}\n")
if not skip_deploy:
2022-03-07 10:25:45 +01:00
ready_to_deploy = input("Are you ready to Deploy? (y/n): ")
if ready_to_deploy == "y":
2022-03-01 09:17:17 +01:00
deploy_contract(
config=config,
contract_directory=directory,
target=target,
)
print("Deployed")
else:
2022-03-07 10:25:45 +01:00
print("Skipping deployment")
if __name__ == "__main__":
# execute()
print("Not Implemented")