Add dumpconfig command flag
This commit is contained in:
		
							parent
							
								
									b88758e48e
								
							
						
					
					
						commit
						a3ddc31bfe
					
				| @ -97,6 +97,9 @@ class ArgumentParser(argparse.ArgumentParser): | ||||
|                     self.add_argument(arg[0], nargs='?', type=arg[1], help=arg[2]) | ||||
|         args = super(ArgumentParser, self).parse_args(args=argv) | ||||
| 
 | ||||
|         if args.dumpconfig: | ||||
|             return args | ||||
| 
 | ||||
|         if len(self.pos_args) == 1: | ||||
|             arg = self.pos_args[0] | ||||
|             argname = arg[0] | ||||
| @ -131,6 +134,7 @@ class ArgumentParser(argparse.ArgumentParser): | ||||
|         if arg_flags & Flag.CONFIG: | ||||
|             self.add_argument('-c', '--config', type=str, default=env.get('CONFINI_DIR'), help='Configuration directory') | ||||
|             self.add_argument('-n', '--namespace', type=str, help='Configuration namespace') | ||||
|             self.add_argument('--dumpconfig', action='store_true', help='Output configuration and quit. Use with --raw to omit values and output schema only.') | ||||
|         if arg_flags & Flag.WAIT: | ||||
|             self.add_argument('-w', action='store_true', help='Wait for the last transaction to be confirmed') | ||||
|             self.add_argument('-ww', action='store_true', help='Wait for every transaction to be confirmed') | ||||
|  | ||||
| @ -1,6 +1,7 @@ | ||||
| # standard imports | ||||
| import logging | ||||
| import os | ||||
| import sys | ||||
| 
 | ||||
| # external imports | ||||
| import confini | ||||
| @ -35,7 +36,7 @@ class Config(confini.Config): | ||||
|     default_fee_limit = 0 | ||||
| 
 | ||||
|     @classmethod | ||||
|     def from_args(cls, args, arg_flags=0x0f, env=os.environ, extra_args={}, base_config_dir=None, default_config_dir=None, user_config_dir=None, default_fee_limit=None, logger=None, load_callback=logcallback): | ||||
|     def from_args(cls, args, arg_flags=0x0f, env=os.environ, extra_args={}, base_config_dir=None, default_config_dir=None, user_config_dir=None, default_fee_limit=None, logger=None, load_callback=logcallback, dump_writer=sys.stdout): | ||||
|         """Parses arguments in argparse.ArgumentParser instance, then match and override configuration values that match them. | ||||
| 
 | ||||
|         The method processes all known argument flags from chainlib.cli.Flag passed in the "args" argument.  | ||||
| @ -155,6 +156,9 @@ class Config(confini.Config): | ||||
|         config = confini.Config(config_dir, env_prefix=env_prefix, override_dirs=override_config_dirs) | ||||
|         config.process() | ||||
| 
 | ||||
|         config.add(getattr(args, 'raw'), '_RAW') | ||||
|          | ||||
| 
 | ||||
|         args_override = {} | ||||
| 
 | ||||
|         if arg_flags & Flag.PROVIDER: | ||||
| @ -205,8 +209,6 @@ class Config(confini.Config): | ||||
|         if arg_flags & Flag.EXEC: | ||||
|             config.add(getattr(args, 'executable_address'), '_EXEC_ADDRESS') | ||||
| 
 | ||||
|         config.add(getattr(args, 'raw'), '_RAW') | ||||
| 
 | ||||
|         if arg_flags & Flag.CONFIG: | ||||
|             config.add(getattr(args, 'namespace'), 'CONFIG_USER_NAMESPACE') | ||||
| 
 | ||||
| @ -227,6 +229,21 @@ class Config(confini.Config): | ||||
|             if existing_r == None or r != None: | ||||
|                 config.add(r, v, exists_ok=True) | ||||
| 
 | ||||
|         if getattr(args, 'dumpconfig'): | ||||
|             config_keys = config.all() | ||||
|             with_values = not config.get('_RAW') | ||||
|             for k in config_keys: | ||||
|                 if k[0] == '_': | ||||
|                     continue | ||||
|                 s = k + '=' | ||||
|                 if with_values: | ||||
|                     v = config.get(k) | ||||
|                     if v != None: | ||||
|                         s += str(v) | ||||
|                 s += '\n' | ||||
|                 dump_writer.write(s) | ||||
|             sys.exit(0) | ||||
| 
 | ||||
|         if load_callback != None: | ||||
|             load_callback(config) | ||||
| 
 | ||||
|  | ||||
| @ -47,6 +47,9 @@ class Rpc: | ||||
|         :rtype: chainlib.connection.RPCConnection | ||||
|         :returns: An established rpc connection | ||||
|         """ | ||||
|         if config.get('RPC_SCHEME') != 'http': | ||||
|             raise NotImplementedError('Only http(s) scheme is implemented for RPC connections at this time') | ||||
| 
 | ||||
|         auth = None | ||||
|         if config.get('RPC_AUTH') == 'basic': | ||||
|             from chainlib.auth import BasicAuth | ||||
| @ -58,7 +61,7 @@ class Rpc: | ||||
|             self.id_generator = IntSequenceGenerator() | ||||
| 
 | ||||
|         self.chain_spec = config.get('CHAIN_SPEC') | ||||
|         self.conn = self.constructor(url=config.get('RPC_HTTP_PROVIDER'), chain_spec=self.chain_spec, auth=auth) | ||||
|         self.conn = self.constructor(url=config.get('RPC_PROVIDER'), chain_spec=self.chain_spec, auth=auth) | ||||
| 
 | ||||
|         return self.conn | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user