feat: add interactive deployment and switch to poetry #2
| @ -60,6 +60,9 @@ below are limited to the context of the EVM. | ||||
|  poetry run cic -h | ||||
| ``` | ||||
| 
 | ||||
| ```bash | ||||
|  poetry run cic wizard ./somewhere -c ./config/dev-docker | ||||
| ``` | ||||
| ### Tests | ||||
| 
 | ||||
| ``` | ||||
|  | ||||
| @ -109,19 +109,32 @@ def generate_contract( | ||||
|     CIC_REGISTRY_ADDRESS: {config.get("CIC_REGISTRY_ADDRESS")} | ||||
|     CHAIN_SPEC: {config.get("CHAIN_SPEC")} | ||||
|     RPC_PROVIDER: {config.get("RPC_PROVIDER")} | ||||
|     AUTH_KEY: {config.get("AUTH_KEY")} | ||||
|     """ | ||||
|     ) | ||||
|     for target in targets: | ||||
|         # TODO Clean this up | ||||
|         modname = f"cic.ext.{target}" | ||||
|         cmd_mod = importlib.import_module(modname) | ||||
|         signer_hint = config.get("WALLET_KEY_FILE") | ||||
|         keys = cmd_mod.list_keys(config, signer_hint) | ||||
|         for idx, key in enumerate(keys): | ||||
|             print(f"{idx} - {key} ") | ||||
|         selecting_key = True | ||||
|         while selecting_key: | ||||
|             idx = int(input("Select key: ")) | ||||
|             if keys[idx] is not None: | ||||
|                 key_account_address = keys[idx] | ||||
|                 selecting_key = False | ||||
|             else: | ||||
|                 print("Invalid key, try again") | ||||
| 
 | ||||
|         m = importlib.import_module(f"cic.ext.{target}.start") | ||||
|         m.extension_start( | ||||
|             network, | ||||
|             registry_address=config.get("CIC_REGISTRY_ADDRESS"), | ||||
|             chain_spec=ChainSpec.from_chain_str(config.get("CHAIN_SPEC")), | ||||
|             rpc_provider=config.get("RPC_PROVIDER"), | ||||
|             key_account_address=config.get( | ||||
|                 "AUTH_KEY" | ||||
|             ),  # TODO this should come from the wallet keystore | ||||
|             key_account_address=key_account_address | ||||
|         ) | ||||
|     network.load() | ||||
| 
 | ||||
|  | ||||
| @ -18,7 +18,7 @@ from giftable_erc20_token import GiftableToken | ||||
| from hexathon import add_0x, strip_0x | ||||
| 
 | ||||
| # local imports | ||||
| from cic.ext.eth.rpc import parse_adapter | ||||
| from cic.ext.eth.rpc import parse_adapter, list_keys | ||||
| from cic.extension import Extension | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -52,3 +52,17 @@ def parse_adapter(config, signer_hint): | ||||
|     rpc.connect_by_config(config) | ||||
| 
 | ||||
|     return (rpc.conn, signer) | ||||
| 
 | ||||
| # TODO Find a better place for this | ||||
| def list_keys(config, signer_hint): | ||||
|     keystore = None | ||||
|     if signer_hint is None: | ||||
|         logg.info("signer hint missing") | ||||
|         return None | ||||
|     st = os.stat(signer_hint) | ||||
|     if stat.S_ISDIR(st.st_mode): | ||||
|         logg.debug("signer hint is directory") | ||||
|         keystore = EthKeystoreDirectory() | ||||
|         keystore.process_dir(signer_hint, default_password=config.get('WALLET_PASSPHRASE', '')) | ||||
|          | ||||
|     return keystore.list() | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user