Implement decode tool on settings module

This commit is contained in:
lash 2022-05-12 15:19:16 +00:00
parent 2d06d60eed
commit 9470b81fad
Signed by: lash
GPG Key ID: 21D2E7BB88C2A746
3 changed files with 43 additions and 18 deletions

View File

@ -8,6 +8,14 @@ import json
import logging import logging
import select import select
# external imports
from chainlib.settings import ChainSettings
from chainlib.chain import ChainSpec
from chainlib.jsonrpc import IntSequenceGenerator
from funga.eth.keystore.dict import DictKeystore
from funga.eth.signer import EIP155Signer
from hexathon import add_0x
# local imports # local imports
import chainlib.eth.cli import chainlib.eth.cli
from chainlib.eth.cli.arg import ( from chainlib.eth.cli.arg import (
@ -23,17 +31,18 @@ from chainlib.eth.cli.log import process_log
from chainlib.eth.address import AddressChecksum from chainlib.eth.address import AddressChecksum
from chainlib.eth.connection import EthHTTPConnection from chainlib.eth.connection import EthHTTPConnection
from chainlib.eth.tx import count from chainlib.eth.tx import count
from chainlib.chain import ChainSpec from chainlib.eth.settings import process_settings
from chainlib.jsonrpc import IntSequenceGenerator
from funga.eth.keystore.dict import DictKeystore
from funga.eth.signer import EIP155Signer
from hexathon import add_0x
logg = logging.getLogger() logg = logging.getLogger()
script_dir = os.path.dirname(os.path.realpath(__file__)) script_dir = os.path.dirname(os.path.realpath(__file__))
config_dir = os.path.join(script_dir, '..', 'data', 'config') config_dir = os.path.join(script_dir, '..', 'data', 'config')
def process_config_local(config, arg, args, flags):
config.add(args.address, '_RECIPIENT', False)
return config
argparser = chainlib.eth.cli.ArgumentParser() argparser = chainlib.eth.cli.ArgumentParser()
arg_flags = ArgFlag() arg_flags = ArgFlag()
arg = Arg(arg_flags) arg = Arg(arg_flags)
@ -48,22 +57,21 @@ logg.debug('flags {} {} {}'.format(flags, arg_flags.SEQ, flags & arg_flags.SEQ))
config = Config() config = Config()
config = process_config(config, arg, args, flags) config = process_config(config, arg, args, flags)
config = process_config_local(config, arg, args, flags)
logg.debug('config loaded:\n{}'.format(config)) logg.debug('config loaded:\n{}'.format(config))
holder_address = args.address settings = ChainSettings()
wallet = chainlib.eth.cli.Wallet() settings = process_settings(settings, config)
wallet.from_config(config) logg.debug('settings loaded:\n{}'.format(settings))
if wallet.get_signer_address() == None and holder_address != None:
wallet.from_address(holder_address)
rpc = chainlib.eth.cli.Rpc(wallet=wallet)
conn = rpc.connect_by_config(config)
def main(): def main():
# TODO: should tolerate if address not prefixed with 0x # TODO: should tolerate if address not prefixed with 0x
o = count(add_0x(holder_address), id_generator=rpc.id_generator) o = count(
r = conn.do(o) settings.get('RECIPIENT'),
id_generator=settings.get('RPC_ID_GENERATOR'),
)
r = settings.get('CONN').do(o)
count_result = None count_result = None
try: try:
count_result = int(r, 16) count_result = int(r, 16)

View File

@ -11,6 +11,7 @@ import select
# external imports # external imports
import chainlib.eth.cli import chainlib.eth.cli
from chainlib.eth.tx import unpack from chainlib.eth.tx import unpack
from chainlib.settings import ChainSettings
from chainlib.chain import ChainSpec from chainlib.chain import ChainSpec
# local imports # local imports
@ -26,6 +27,7 @@ from chainlib.eth.cli.config import (
process_config, process_config,
) )
from chainlib.eth.cli.log import process_log from chainlib.eth.cli.log import process_log
from chainlib.eth.settings import process_settings
logging.basicConfig(level=logging.WARNING) logging.basicConfig(level=logging.WARNING)
@ -35,9 +37,14 @@ script_dir = os.path.dirname(os.path.realpath(__file__))
config_dir = os.path.join(script_dir, '..', 'data', 'config') config_dir = os.path.join(script_dir, '..', 'data', 'config')
def process_config_local(config, arg, args, flags):
config.add(args.tx_data, '_TX_DATA', False)
return config
arg_flags = ArgFlag() arg_flags = ArgFlag()
arg = Arg(arg_flags) arg = Arg(arg_flags)
flags = arg_flags.VERBOSE | arg_flags.CHAIN_SPEC | arg_flags.RAW | arg_flags.ENV flags = arg_flags.VERBOSE | arg_flags.CHAIN_SPEC | arg_flags.RAW | arg_flags.ENV | arg_flags.SEQ
argparser = chainlib.eth.cli.ArgumentParser() argparser = chainlib.eth.cli.ArgumentParser()
argparser = process_args(argparser, arg, flags) argparser = process_args(argparser, arg, flags)
@ -48,13 +55,20 @@ logg = process_log(args, logg)
config = Config() config = Config()
config = process_config(config, arg, args, flags) config = process_config(config, arg, args, flags)
config = process_config_local(config, arg, args, flags)
logg.debug('config loaded:\n{}'.format(config)) logg.debug('config loaded:\n{}'.format(config))
settings = ChainSettings()
settings = process_settings(settings, config)
logg.debug('settings loaded:\n{}'.format(settings))
chain_spec = ChainSpec.from_chain_str(config.get('CHAIN_SPEC'))
def main(): def main():
decode_for_puny_humans(args.tx_data, chain_spec, sys.stdout) decode_for_puny_humans(
config.get('_TX_DATA'),
settings.get('CHAIN_SPEC'),
sys.stdout,
)
if __name__ == '__main__': if __name__ == '__main__':
main() main()

View File

@ -1,5 +1,6 @@
# external imports # external imports
from chainlib.settings import process_settings as base_process_settings from chainlib.settings import process_settings as base_process_settings
from chainlib.error import SignerMissingException
from hexathon import add_0x from hexathon import add_0x
# local imports # local imports
@ -16,6 +17,8 @@ def process_settings_rpc(settings, config):
settings.set('SENDER_ADDRESS', add_0x(sender_address)) settings.set('SENDER_ADDRESS', add_0x(sender_address))
except AttributeError: except AttributeError:
pass pass
except SignerMissingException:
pass
gas_oracle = rpc.get_gas_oracle() gas_oracle = rpc.get_gas_oracle()
settings.set('GAS_ORACLE', gas_oracle) settings.set('GAS_ORACLE', gas_oracle)