Skip to content

Commit 1a89ed3

Browse files
Merge pull request #29 from ElrondNetwork/extra-config-args
Extra config args
2 parents 98ba199 + d429c38 commit 1a89ed3

12 files changed

Lines changed: 180 additions & 117 deletions

erdpy/cli.py

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import erdpy.cli_wallet
2222
import erdpy.cli_delagation
2323
import erdpy.cli_dns
24-
from erdpy import errors, scope
24+
from erdpy import config, errors, scope
2525
from erdpy._version import __version__
2626

2727
logger = logging.getLogger("cli")
@@ -32,18 +32,20 @@ def main():
3232
_do_main()
3333
except errors.KnownError as err:
3434
logger.critical(err.get_pretty())
35-
sys.exit(1)
35+
return 1
3636
except KeyboardInterrupt:
3737
print("erdpy process killed by user.")
38-
sys.exit(1)
38+
return 1
39+
return 0
3940

4041

4142
def _do_main():
4243
logging.basicConfig(level=logging.INFO)
4344
scope.initialize()
4445

45-
parser = setup_parser()
46-
args = parser.parse_args()
46+
argv_with_config_args = config.add_config_args(sys.argv[1:])
47+
parser = setup_parser(argv_with_config_args)
48+
args = parser.parse_args(argv_with_config_args)
4749

4850
if args.verbose:
4951
logging.basicConfig(level=logging.DEBUG)
@@ -56,7 +58,7 @@ def _do_main():
5658
args.func(args)
5759

5860

59-
def setup_parser():
61+
def setup_parser(args: List[str] = sys.argv[1:]):
6062
parser = ArgumentParser(
6163
prog="erdpy",
6264
usage="erdpy [-h] [-v] [--verbose] COMMAND-GROUP [-h] COMMAND ...",
@@ -82,23 +84,23 @@ def setup_parser():
8284
subparsers = parser.add_subparsers()
8385
commands: List[Any] = []
8486

85-
commands.append(erdpy.cli_contracts.setup_parser(subparsers))
86-
commands.append(erdpy.cli_transactions.setup_parser(subparsers))
87-
commands.append(erdpy.cli_validators.setup_parser(subparsers))
87+
commands.append(erdpy.cli_contracts.setup_parser(args, subparsers))
88+
commands.append(erdpy.cli_transactions.setup_parser(args, subparsers))
89+
commands.append(erdpy.cli_validators.setup_parser(args, subparsers))
8890
commands.append(erdpy.cli_accounts.setup_parser(subparsers))
8991
commands.append(erdpy.cli_ledger.setup_parser(subparsers))
90-
commands.append(erdpy.cli_wallet.setup_parser(subparsers))
92+
commands.append(erdpy.cli_wallet.setup_parser(args, subparsers))
9193
commands.append(erdpy.cli_network.setup_parser(subparsers))
9294
commands.append(erdpy.cli_cost.setup_parser(subparsers))
93-
commands.append(erdpy.cli_dispatcher.setup_parser(subparsers))
95+
commands.append(erdpy.cli_dispatcher.setup_parser(args, subparsers))
9496
commands.append(erdpy.cli_blockatlas.setup_parser(subparsers))
9597
commands.append(erdpy.cli_deps.setup_parser(subparsers))
9698
commands.append(erdpy.cli_config.setup_parser(subparsers))
9799
commands.append(erdpy.cli_block.setup_parser(subparsers))
98-
commands.append(erdpy.cli_testnet.setup_parser(subparsers))
100+
commands.append(erdpy.cli_testnet.setup_parser(args, subparsers))
99101
commands.append(erdpy.cli_data.setup_parser(subparsers))
100-
commands.append(erdpy.cli_delagation.setup_parser(subparsers))
101-
commands.append(erdpy.cli_dns.setup_parser(subparsers))
102+
commands.append(erdpy.cli_delagation.setup_parser(args, subparsers))
103+
commands.append(erdpy.cli_dns.setup_parser(args, subparsers))
102104

103105
parser.epilog = """
104106
----------------------
@@ -112,4 +114,5 @@ def setup_parser():
112114

113115

114116
if __name__ == "__main__":
115-
main()
117+
ret = main()
118+
sys.exit(ret)

erdpy/cli_contracts.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import logging
22
import os
3-
from typing import Any
3+
from typing import Any, List
44

55
from pathlib import Path
66

@@ -14,7 +14,7 @@
1414
logger = logging.getLogger("cli.contracts")
1515

1616

17-
def setup_parser(subparsers: Any) -> Any:
17+
def setup_parser(args: List[str], subparsers: Any) -> Any:
1818
parser = cli_shared.add_group_subparser(subparsers, "contract", "Build, deploy and interact with Smart Contracts")
1919
subparsers = parser.add_subparsers()
2020

@@ -50,9 +50,9 @@ def setup_parser(subparsers: Any) -> Any:
5050
_add_project_or_bytecode_arg(sub)
5151
_add_metadata_arg(sub)
5252
cli_shared.add_outfile_arg(sub)
53-
cli_shared.add_wallet_args(sub)
53+
cli_shared.add_wallet_args(args, sub)
5454
cli_shared.add_proxy_arg(sub)
55-
cli_shared.add_tx_args(sub, with_receiver=False, with_data=False)
55+
cli_shared.add_tx_args(args, sub, with_receiver=False, with_data=False)
5656
_add_arguments_arg(sub)
5757
sub.add_argument("--wait-result", action="store_true", default=False,
5858
help="signal to wait for the transaction result - only valid if --send is set")
@@ -65,9 +65,9 @@ def setup_parser(subparsers: Any) -> Any:
6565
sub = cli_shared.add_command_subparser(subparsers, "contract", "call", "Interact with a Smart Contract (execute function).")
6666
_add_contract_arg(sub)
6767
cli_shared.add_outfile_arg(sub)
68-
cli_shared.add_wallet_args(sub)
68+
cli_shared.add_wallet_args(args, sub)
6969
cli_shared.add_proxy_arg(sub)
70-
cli_shared.add_tx_args(sub, with_receiver=False, with_data=False)
70+
cli_shared.add_tx_args(args, sub, with_receiver=False, with_data=False)
7171
_add_function_arg(sub)
7272
_add_arguments_arg(sub)
7373
sub.add_argument("--wait-result", action="store_true", default=False,
@@ -83,9 +83,9 @@ def setup_parser(subparsers: Any) -> Any:
8383
cli_shared.add_outfile_arg(sub)
8484
_add_project_or_bytecode_arg(sub)
8585
_add_metadata_arg(sub)
86-
cli_shared.add_wallet_args(sub)
86+
cli_shared.add_wallet_args(args, sub)
8787
cli_shared.add_proxy_arg(sub)
88-
cli_shared.add_tx_args(sub, with_receiver=False, with_data=False)
88+
cli_shared.add_tx_args(args, sub, with_receiver=False, with_data=False)
8989
_add_arguments_arg(sub)
9090
sub.add_argument("--wait-result", action="store_true", default=False,
9191
help="signal to wait for the transaction result - only valid if --send is set")

erdpy/cli_delagation.py

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import binascii
22
import sys
3-
from typing import Any
3+
from typing import Any, List
44

55
from erdpy import cli_shared, errors, utils
66
from erdpy.accounts import Address
@@ -9,15 +9,15 @@
99
from erdpy.transactions import do_prepare_transaction
1010

1111

12-
def setup_parser(subparsers: Any) -> Any:
12+
def setup_parser(args: List[str], subparsers: Any) -> Any:
1313
parser = cli_shared.add_group_subparser(subparsers, "staking-provider", "Staking provider omnitool")
1414
subparsers = parser.add_subparsers()
1515

1616
# create new delegation contract
1717
sub = cli_shared.add_command_subparser(subparsers, "staking-provider", "create-new-delegation-contract",
1818
"Create a new delegation system smart contract, transferred value must be"
1919
"greater than baseIssuingCost + min deposit value")
20-
_add_common_arguments(sub)
20+
_add_common_arguments(args, sub)
2121
sub.add_argument("--total-delegation-cap", required=True, help="the total delegation contract capacity")
2222
sub.add_argument("--service-fee", required=True, help="the delegation contract service fee")
2323
sub.set_defaults(func=do_create_delegation_contract)
@@ -37,87 +37,87 @@ def setup_parser(subparsers: Any) -> Any:
3737
sub.add_argument("--validators-file", required=True, help="a JSON file describing the Nodes")
3838
sub.add_argument("--delegation-contract", required=True, help="address of the delegation contract")
3939
sub.add_argument("--using-delegation-manager", action="store_true", required=False, help="whether delegation contract was created using the Delegation Manager")
40-
_add_common_arguments(sub)
40+
_add_common_arguments(args, sub)
4141
sub.set_defaults(func=add_new_nodes)
4242

4343
# remove nodes
4444
sub = cli_shared.add_command_subparser(subparsers, "staking-provider", "remove-nodes",
4545
"Remove nodes must be called by the contract owner")
4646
sub.add_argument("--bls-keys", required=True, help="a list with the bls keys of the nodes")
4747
sub.add_argument("--delegation-contract", required=True, help="address of the delegation contract")
48-
_add_common_arguments(sub)
48+
_add_common_arguments(args, sub)
4949
sub.set_defaults(func=remove_nodes)
5050

5151
# stake nodes
5252
sub = cli_shared.add_command_subparser(subparsers, "staking-provider", "stake-nodes",
5353
"Stake nodes must be called by the contract owner")
5454
sub.add_argument("--bls-keys", required=True, help="a list with the bls keys of the nodes")
5555
sub.add_argument("--delegation-contract", required=True, help="address of the delegation contract")
56-
_add_common_arguments(sub)
56+
_add_common_arguments(args, sub)
5757
sub.set_defaults(func=stake_nodes)
5858

5959
# unbond nodes
6060
sub = cli_shared.add_command_subparser(subparsers, "staking-provider", "unbond-nodes",
6161
"Unbond nodes must be called by the contract owner")
6262
sub.add_argument("--bls-keys", required=True, help="a list with the bls keys of the nodes")
6363
sub.add_argument("--delegation-contract", required=True, help="address of the delegation contract")
64-
_add_common_arguments(sub)
64+
_add_common_arguments(args, sub)
6565
sub.set_defaults(func=unbond_nodes)
6666

6767
# unstake nodes
6868
sub = cli_shared.add_command_subparser(subparsers, "staking-provider", "unstake-nodes",
6969
"Unstake nodes must be called by the contract owner")
7070
sub.add_argument("--bls-keys", required=True, help="a list with the bls keys of the nodes")
7171
sub.add_argument("--delegation-contract", required=True, help="address of the delegation contract")
72-
_add_common_arguments(sub)
72+
_add_common_arguments(args, sub)
7373
sub.set_defaults(func=unstake_nodes)
7474

7575
# unjail nodes
7676
sub = cli_shared.add_command_subparser(subparsers, "staking-provider", "unjail-nodes",
7777
"Unjail nodes must be called by the contract owner")
7878
sub.add_argument("--bls-keys", required=True, help="a list with the bls keys of the nodes")
7979
sub.add_argument("--delegation-contract", required=True, help="address of the delegation contract")
80-
_add_common_arguments(sub)
80+
_add_common_arguments(args, sub)
8181
sub.set_defaults(func=unjail_nodes)
8282

8383
# change service fee
8484
sub = cli_shared.add_command_subparser(subparsers, "staking-provider", "change-service-fee",
8585
"Change service fee must be called by the contract owner")
8686
sub.add_argument("--service-fee", required=True, help="new service fee value")
8787
sub.add_argument("--delegation-contract", required=True, help="address of the delegation contract")
88-
_add_common_arguments(sub)
88+
_add_common_arguments(args, sub)
8989
sub.set_defaults(func=change_service_fee)
9090

9191
# modify total delegation cap
9292
sub = cli_shared.add_command_subparser(subparsers, "staking-provider", "modify-delegation-cap",
9393
"Modify delegation cap must be called by the contract owner")
9494
sub.add_argument("--delegation-cap", required=True, help="new delegation contract capacity")
9595
sub.add_argument("--delegation-contract", required=True, help="address of the delegation contract")
96-
_add_common_arguments(sub)
96+
_add_common_arguments(args, sub)
9797
sub.set_defaults(func=modify_delegation_cap)
9898

9999
# set automatic activation
100100
sub = cli_shared.add_command_subparser(subparsers, "staking-provider", "automatic-activation",
101101
"Automatic activation must be called by the contract owner")
102102

103-
sub.add_argument("--set", action="store_true", required=not (utils.is_arg_present("--unset", sys.argv)),
103+
sub.add_argument("--set", action="store_true", required=not (utils.is_arg_present(args, "--unset")),
104104
help="set automatic activation True")
105-
sub.add_argument("--unset", action="store_true", required=not (utils.is_arg_present("--set", sys.argv)),
105+
sub.add_argument("--unset", action="store_true", required=not (utils.is_arg_present(args, "--set")),
106106
help="set automatic activation False")
107107
sub.add_argument("--delegation-contract", required=True, help="address of the delegation contract")
108-
_add_common_arguments(sub)
108+
_add_common_arguments(args, sub)
109109
sub.set_defaults(func=automatic_activation)
110110

111111
# set redelegate cap
112112
sub = cli_shared.add_command_subparser(subparsers, "staking-provider", "redelegate-cap",
113113
"Redelegate cap must be called by the contract owner")
114114

115-
sub.add_argument("--set", action="store_true", required=not (utils.is_arg_present("--unset", sys.argv)),
115+
sub.add_argument("--set", action="store_true", required=not (utils.is_arg_present(args, "--unset")),
116116
help="set redelegate cap True")
117-
sub.add_argument("--unset", action="store_true", required=not (utils.is_arg_present("--set", sys.argv)),
117+
sub.add_argument("--unset", action="store_true", required=not (utils.is_arg_present(args, "--set")),
118118
help="set redelegate cap False")
119119
sub.add_argument("--delegation-contract", required=True, help="address of the delegation contract")
120-
_add_common_arguments(sub)
120+
_add_common_arguments(args, sub)
121121
sub.set_defaults(func=redelegate_cap)
122122

123123
# set metadata
@@ -128,14 +128,14 @@ def setup_parser(subparsers: Any) -> Any:
128128
sub.add_argument("--website", required=True, help="website field in staking provider metadata")
129129
sub.add_argument("--identifier", required=True, help="identifier field in staking provider metadata")
130130
sub.add_argument("--delegation-contract", required=True, help="address of the delegation contract")
131-
_add_common_arguments(sub)
131+
_add_common_arguments(args, sub)
132132
sub.set_defaults(func=set_metadata)
133133

134134

135-
def _add_common_arguments(sub: Any):
135+
def _add_common_arguments(args: List[str], sub: Any):
136136
cli_shared.add_proxy_arg(sub)
137-
cli_shared.add_wallet_args(sub)
138-
cli_shared.add_tx_args(sub, with_receiver=False, with_data=False, with_estimate_gas=True)
137+
cli_shared.add_wallet_args(args, sub)
138+
cli_shared.add_tx_args(args, sub, with_receiver=False, with_data=False, with_estimate_gas=True)
139139
cli_shared.add_broadcast_args(sub, relay=False)
140140
cli_shared.add_outfile_arg(sub, what="signed transaction, hash")
141141

erdpy/cli_dispatcher.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,28 @@
11
from erdpy.dispatcher.transactions.queue import TransactionQueue
22
import logging
3-
from typing import Any
3+
from typing import Any, List
44

55
from erdpy import cli_shared
66

77
logger = logging.getLogger("cli.dispatcher")
88

99

10-
def setup_parser(subparsers: Any) -> Any:
10+
def setup_parser(args: List[str], subparsers: Any) -> Any:
1111
parser = cli_shared.add_group_subparser(subparsers, "dispatcher", "Enqueue transactions, then bulk dispatch them")
1212
subparsers = parser.add_subparsers()
1313

1414
sub = cli_shared.add_command_subparser(subparsers, "dispatcher", "enqueue", "Enqueue a transaction")
15-
cli_shared.add_tx_args(sub, with_nonce=False)
15+
cli_shared.add_tx_args(args, sub, with_nonce=False)
1616
sub.set_defaults(func=enqueue_transaction)
1717

1818
sub = cli_shared.add_command_subparser(subparsers, "dispatcher", "dispatch", "Dispatch queued transactions")
1919
cli_shared.add_proxy_arg(sub)
20-
cli_shared.add_wallet_args(sub)
20+
cli_shared.add_wallet_args(args, sub)
2121
sub.set_defaults(func=dispatch_transactions)
2222

2323
sub = cli_shared.add_command_subparser(subparsers, "dispatcher", "dispatch-continuously", "Continuously dispatch queued transactions")
2424
cli_shared.add_proxy_arg(sub)
25-
cli_shared.add_wallet_args(sub)
25+
cli_shared.add_wallet_args(args, sub)
2626
sub.add_argument("--interval", required=True, help="the interval to retrieve transactions from the queue, in seconds")
2727
sub.set_defaults(func=dispatch_transactions_continuously)
2828

erdpy/cli_dns.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Any
1+
from typing import Any, List
22
from prettytable import PrettyTable
33

44
from erdpy import cli_shared
@@ -7,16 +7,16 @@
77
from erdpy.proxy.core import ElrondProxy
88

99

10-
def setup_parser(subparsers: Any) -> Any:
10+
def setup_parser(args: List[str], subparsers: Any) -> Any:
1111
parser = cli_shared.add_group_subparser(subparsers, "dns", "Operations related to the Domain Name Service")
1212
subparsers = parser.add_subparsers()
1313

1414
sub = cli_shared.add_command_subparser(subparsers, "dns", "register", "Send a register transaction to the appropriate DNS contract from given user and with given name")
1515
cli_shared.add_outfile_arg(sub)
1616
cli_shared.add_broadcast_args(sub, relay=True)
17-
cli_shared.add_wallet_args(sub)
17+
cli_shared.add_wallet_args(args, sub)
1818
cli_shared.add_proxy_arg(sub)
19-
cli_shared.add_tx_args(sub, with_receiver=False, with_data=False)
19+
cli_shared.add_tx_args(args, sub, with_receiver=False, with_data=False)
2020
sub.add_argument("--name", help="the name to register")
2121
sub.set_defaults(func=register)
2222

0 commit comments

Comments
 (0)