@@ -74,7 +74,8 @@ def create_argument_parser(*, prog: str = None):
7474
7575
7676def load_argument_groups (parser : ArgumentParser , * groups : Type [ArgumentGroup ]):
77- """Log a set of argument groups into a parser.
77+ """
78+ Log a set of argument groups into a parser.
7879
7980 Returns:
8081 A callable to convert loaded arguments into a settings dictionary
@@ -872,32 +873,56 @@ def get_settings(self, args: Namespace) -> dict:
872873 if args .no_ledger :
873874 settings ["ledger.disabled" ] = True
874875 else :
875- configured = False
876+ single_configured = False
877+ multi_configured = False
878+ update_pool_name = False
876879 if args .genesis_url :
877880 settings ["ledger.genesis_url" ] = args .genesis_url
878- configured = True
881+ single_configured = True
879882 elif args .genesis_file :
880883 settings ["ledger.genesis_file" ] = args .genesis_file
881- configured = True
884+ single_configured = True
882885 elif args .genesis_transactions :
883886 settings ["ledger.genesis_transactions" ] = args .genesis_transactions
884- configured = True
887+ single_configured = True
885888 if args .genesis_transactions_list :
886889 with open (args .genesis_transactions_list , "r" ) as stream :
887890 txn_config_list = yaml .safe_load (stream )
888891 ledger_config_list = []
889892 for txn_config in txn_config_list :
890893 ledger_config_list .append (txn_config )
894+ if "is_write" in txn_config and txn_config ["is_write" ]:
895+ if "genesis_url" in txn_config :
896+ settings ["ledger.genesis_url" ] = txn_config [
897+ "genesis_url"
898+ ]
899+ elif "genesis_file" in txn_config :
900+ settings ["ledger.genesis_file" ] = txn_config [
901+ "genesis_file"
902+ ]
903+ elif "genesis_transactions" in txn_config :
904+ settings ["ledger.genesis_transactions" ] = txn_config [
905+ "genesis_transactions"
906+ ]
907+ else :
908+ raise ArgsParseError (
909+ "No genesis information provided for write ledger"
910+ )
911+ if "id" in txn_config :
912+ settings ["ledger.pool_name" ] = txn_config ["id" ]
913+ update_pool_name = True
891914 settings ["ledger.ledger_config_list" ] = ledger_config_list
892- configured = True
893- if not configured :
915+ multi_configured = True
916+ if not ( single_configured or multi_configured ) :
894917 raise ArgsParseError (
895918 "One of --genesis-url --genesis-file, --genesis-transactions "
896919 "or --genesis-transactions-list must be specified (unless "
897920 "--no-ledger is specified to explicitly configure aca-py to"
898921 " run with no ledger)."
899922 )
900- if args .ledger_pool_name :
923+ if single_configured and multi_configured :
924+ raise ArgsParseError ("Cannot configure both single- and multi-ledger." )
925+ if args .ledger_pool_name and not update_pool_name :
901926 settings ["ledger.pool_name" ] = args .ledger_pool_name
902927 if args .ledger_keepalive :
903928 settings ["ledger.keepalive" ] = args .ledger_keepalive
0 commit comments