Skip to content
Merged
Show file tree
Hide file tree
Changes from 14 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,5 @@ venv.bak/
typings

multiversx_sdk_cli/tests/testdata-out

.DS_store
14 changes: 11 additions & 3 deletions multiversx_sdk_cli/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,11 @@ def main(cli_args: list[str] = sys.argv[1:]):

def _do_main(cli_args: list[str]):
utils.ensure_folder(config.SDK_PATH)
argv_with_config_args = config.add_config_args(cli_args)
parser = setup_parser(argv_with_config_args)
parser = setup_parser(cli_args)
argcomplete.autocomplete(parser)
args = parser.parse_args(argv_with_config_args)

_handle_verbose_argument(cli_args)
args = parser.parse_args(cli_args)

if args.verbose:
logging.basicConfig(
Expand Down Expand Up @@ -147,6 +148,13 @@ def verify_deprecated_entries_in_config_file():
ux.show_warning(message.rstrip("\n"))


def _handle_verbose_argument(args: list[str]):
verbose_arg = "--verbose"
if verbose_arg in args:
args.remove(verbose_arg)
args.insert(0, verbose_arg)


if __name__ == "__main__":
ret = main(sys.argv[1:])
sys.exit(ret)
22 changes: 15 additions & 7 deletions multiversx_sdk_cli/cli_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@


def setup_parser(subparsers: Any) -> Any:
parser = cli_shared.add_group_subparser(subparsers, "config", "Configure multiversx-sdk (default values etc.)")
parser = cli_shared.add_group_subparser(subparsers, "config", "Configure MultiversX CLI (default values etc.)")
subparsers = parser.add_subparsers()

sub = cli_shared.add_command_subparser(subparsers, "config", "dump", "Dumps configuration.")
sub = cli_shared.add_command_subparser(subparsers, "config", "dump", "Dumps the active configuration.")
sub.add_argument(
"--defaults",
required=False,
Expand All @@ -22,20 +22,28 @@ def setup_parser(subparsers: Any) -> Any:
)
sub.set_defaults(func=dump)

sub = cli_shared.add_command_subparser(subparsers, "config", "get", "Gets a configuration value.")
sub = cli_shared.add_command_subparser(
subparsers, "config", "get", "Gets a configuration value from the active configuration."
)
_add_name_arg(sub)
sub.set_defaults(func=get_value)

sub = cli_shared.add_command_subparser(subparsers, "config", "set", "Sets a configuration value.")
sub = cli_shared.add_command_subparser(
subparsers, "config", "set", "Sets a configuration value for the active configuration."
)
_add_name_arg(sub)
sub.add_argument("value", help="the new value")
sub.set_defaults(func=set_value)

sub = cli_shared.add_command_subparser(subparsers, "config", "delete", "Deletes a configuration value.")
sub = cli_shared.add_command_subparser(
subparsers, "config", "delete", "Deletes a configuration value from the active configuration."
)
_add_name_arg(sub)
sub.set_defaults(func=delete_value)

sub = cli_shared.add_command_subparser(subparsers, "config", "new", "Creates a new configuration.")
sub = cli_shared.add_command_subparser(
subparsers, "config", "new", "Creates a new configuration and sets it as the active configuration."
)
_add_name_arg(sub)
sub.add_argument(
"--template",
Expand All @@ -44,7 +52,7 @@ def setup_parser(subparsers: Any) -> Any:
)
sub.set_defaults(func=new_config)

sub = cli_shared.add_command_subparser(subparsers, "config", "switch", "Switch to a different config")
sub = cli_shared.add_command_subparser(subparsers, "config", "switch", "Switch to a different config.")
_add_name_arg(sub)
sub.set_defaults(func=switch_config)

Expand Down
27 changes: 21 additions & 6 deletions multiversx_sdk_cli/cli_contracts.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
validate_transaction_args,
)
from multiversx_sdk_cli.cli_output import CLIOutputBuilder
from multiversx_sdk_cli.config import get_config_for_network_providers
from multiversx_sdk_cli.config import MxpyConfig, get_config_for_network_providers
from multiversx_sdk_cli.constants import NUMBER_OF_SHARDS
from multiversx_sdk_cli.contract_verification import trigger_contract_verification
from multiversx_sdk_cli.contracts import SmartContract
Expand Down Expand Up @@ -369,13 +369,16 @@ def build(args: Any):

The primary tool for building smart contracts is `sc-meta`.
To install `sc-meta` check out the documentation: https://docs.multiversx.com/sdk-and-tools/troubleshooting/rust-setup.
After installing, use the `sc-meta all build` command. To lear more about `sc-meta`, check out this page: https://docs.multiversx.com/developers/meta/sc-meta-cli/#calling-build."""
After installing, use the `sc-meta all build` command. To learn more about `sc-meta`, check out this page: https://docs.multiversx.com/developers/meta/sc-meta-cli/#calling-build."""
show_warning(message)


def deploy(args: Any):
logger.debug("deploy")

cli_config = MxpyConfig.from_active_config()
cli_shared.set_proxy_from_config_if_not_provided(args, cli_config)

validate_transaction_args(args)
ensure_wallet_args_are_provided(args)
validate_broadcast_args(args)
Expand All @@ -387,7 +390,7 @@ def deploy(args: Any):
args=args,
)

chain_id = cli_shared.get_chain_id(args.chain, args.proxy)
chain_id = cli_shared.get_chain_id(args.proxy, args.chain)
config = TransactionsFactoryConfig(chain_id)

abi = Abi.load(Path(args.abi)) if args.abi else None
Expand All @@ -405,6 +408,7 @@ def deploy(args: Any):
payable=args.metadata_payable,
payable_by_sc=args.metadata_payable_by_sc,
gas_limit=int(args.gas_limit),
gas_price=int(args.gas_price),
value=int(args.value),
nonce=sender.nonce,
version=int(args.version),
Expand All @@ -416,14 +420,17 @@ def deploy(args: Any):
contract_address = address_computer.compute_contract_address(deployer=sender.address, deployment_nonce=tx.nonce)

logger.info("Contract address: %s", contract_address.to_bech32())
utils.log_explorer_contract_address(args.chain, contract_address.to_bech32())
utils.log_explorer_contract_address(args.chain, contract_address.to_bech32(), cli_config.explorer_url)

_send_or_simulate(tx, contract_address, args)


def call(args: Any):
logger.debug("call")

cli_config = MxpyConfig.from_active_config()
cli_shared.set_proxy_from_config_if_not_provided(args, cli_config)

validate_transaction_args(args)
ensure_wallet_args_are_provided(args)
validate_broadcast_args(args)
Expand All @@ -435,7 +442,7 @@ def call(args: Any):
args=args,
)

chain_id = cli_shared.get_chain_id(args.chain, args.proxy)
chain_id = cli_shared.get_chain_id(args.proxy, args.chain)
config = TransactionsFactoryConfig(chain_id)

abi = Abi.load(Path(args.abi)) if args.abi else None
Expand All @@ -451,6 +458,7 @@ def call(args: Any):
arguments=arguments,
should_prepare_args=should_prepare_args,
gas_limit=int(args.gas_limit),
gas_price=int(args.gas_price),
value=int(args.value),
transfers=args.token_transfers,
nonce=sender.nonce,
Expand All @@ -465,6 +473,9 @@ def call(args: Any):
def upgrade(args: Any):
logger.debug("upgrade")

cli_config = MxpyConfig.from_active_config()
cli_shared.set_proxy_from_config_if_not_provided(args, cli_config)

validate_transaction_args(args)
ensure_wallet_args_are_provided(args)
validate_broadcast_args(args)
Expand All @@ -476,7 +487,7 @@ def upgrade(args: Any):
args=args,
)

chain_id = cli_shared.get_chain_id(args.chain, args.proxy)
chain_id = cli_shared.get_chain_id(args.proxy, args.chain)
config = TransactionsFactoryConfig(chain_id)

abi = Abi.load(Path(args.abi)) if args.abi else None
Expand All @@ -496,6 +507,7 @@ def upgrade(args: Any):
payable=args.metadata_payable,
payable_by_sc=args.metadata_payable_by_sc,
gas_limit=int(args.gas_limit),
gas_price=int(args.gas_price),
value=int(args.value),
nonce=sender.nonce,
version=int(args.version),
Expand All @@ -509,6 +521,9 @@ def upgrade(args: Any):
def query(args: Any):
logger.debug("query")

cli_config = MxpyConfig.from_active_config()
cli_shared.set_proxy_from_config_if_not_provided(args, cli_config)

validate_proxy_argument(args)

# we don't need chainID to query a contract; we use the provided proxy
Expand Down
Loading
Loading