Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: guide user to call a parachain #316

Merged
merged 200 commits into from
Dec 10, 2024
Merged

Conversation

AlexD10S
Copy link
Collaborator

@AlexD10S AlexD10S commented Sep 24, 2024

This PR introduces the pop call parachain command, providing guidance for users to interact with a chain. The approach to achieving a great DevEx is to start with a list of specific use cases that we believe will be most useful for developers, such as creating an asset, nfts, and other interesting developer focused actions, while also allowing them to access a broader range of extrinsics.

┌   Pop CLI : Call a parachain
│
◇    Which chain would you like to interact with?
│  ws://localhost:9944/
│
◆  What would you like to do?
│  ○ Transfer balance 
│  ○ Create an asset 
│  ○ Mint an asset 
│  ○ Create an NFT collection 
│  ○ Mint an NFT 
│  ● All (Explore all pallets and extrinsics)
└  

pop-cli also offer a the command-line interface for direct execution. For example to mint an NFT directly: pop call parachain --pallet Nfts --extrinsic mint --args "1" "1" "Id(5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty)" "None()" --url ws://localhost:9944/ --suri //Alice

Additional PRs:

To simplify the review process, some functionality has been split out from this main PR:

◇  What would you like to do?
│  Register a parachain ID with genesis state and code 
│
◇  Enter the value for the parameter: id
│  2000
│
◇  Enter the value for the parameter: genesis_head
│  0x000000000000000000000000000000000000000000000000000000000000000000fc3a2a9c95d7e6cfc871d72111eb7af5c30da67f1b8ef35ff4eb346c9483201e03170a2e7597b7b7e3d84c05391d139a62b157e78786d8c082f29dcf4c11131400
│
◆  Enter the value for the parameter: validation_code
│  Type required: [u8]
└  

Review Considerations

  • Some extrinsics are not supported yet due to the complexity of input the parameters. Example: A sudo call where another call has to be inputted by a command line:
- ◇  Select the pallet to call:
│  Sudo 
│
◇  Select the extrinsic to call:
│  sudo 
│
└  The selected extrinsic is not supported yet. Please choose another one.

For a better DevEx this will functionality will be supported using a flag to indicate it (#349).

  • Some file changes occurred because this feature required files originally in the pop_contracts crate. Functions like create_signer, format_type and find_free_port were moved to the pop_common crate to make them accessible in the pop_parachain crate.

  • The way the extrinsic arguments are prompted here is an improvement over the pop call contract functionality. In this implementation, we present Variants (Enums) as a selectable list with different options and individually prompt for all the fields of a Composite (Struct) type, constructing it for the user. If approved, this approach can be reused later to improve the experience in pop call contract as well.

[sc-1314] [sc-1515]

@brunopgalvao
Copy link
Contributor

Preliminary UX Feedback:


◇  Which chain would you like to interact with?
│  wss://rpc1.paseo.popnetwork.xyz

How does the user know what Pop CLI supports for chain calls? e.g. minting NFTs, minting assets? etc.

Make the UX around what is possible to do on Polkadot, and secondarily, what chains support those operations.

For example:



◆  What would you like to do on Polkadot?
│  ● Create an asset
│  ○ Mint an asset 
│  ○ Create an NFT collection 
│  ○ Mint an NFT from an existing collection
│  ○ Transfer tokens from one account to another 
└  

◆  Supported Polkadot chains:
│  ● Pop Network
│  ○ Phala
│  ○ Acala
│  ○ Moonbeam
│  ○ Custom RPC
└  


◆  On which Relay network?
│  ● Pop Network on Paseo (Polkadot’s Test Network)
│  ○ Pop Network on Polkadot
└  


@AlexD10S AlexD10S added the ready-for-high-level-review The PR needs a high level review label Sep 27, 2024
@AlexD10S
Copy link
Collaborator Author

Preliminary UX Feedback:


◇  Which chain would you like to interact with?
│  wss://rpc1.paseo.popnetwork.xyz

How does the user know what Pop CLI supports for chain calls? e.g. minting NFTs, minting assets? etc.
 Make the UX around what is possible to do on Polkadot, and secondarily, what chains support those operations.

For example:



◆  What would you like to do on Polkadot?
│  ● Create an asset
│  ○ Mint an asset 
│  ○ Create an NFT collection 
│  ○ Mint an NFT from an existing collection
│  ○ Transfer tokens from one account to another 
└  

◆  Supported Polkadot chains:
│  ● Pop Network
│  ○ Phala
│  ○ Acala
│  ○ Moonbeam
│  ○ Custom RPC
└  


◆  On which Relay network?
│  ● Pop Network on Paseo (Polkadot’s Test Network)
│  ○ Pop Network on Polkadot
└  


I don't personally like to have a list of chains. The users of this feature are devs, so in my opinion, the pop call parachain command is most useful when devs are actively working on a chain or smart contract and need to interact with it quickly.

For example, if I’m deploying a smart contract on the Pop Network that interacts with an NFT, I would want to run pop call parachain --pallet nft --extrinsic mint to mint the NFT locally or on a testnet with only 1 command. Similarly, if I need to test an XCM call, I may want to quickly fund an account on the relay chain.

For these two scenarios, I believe the current flow works best: first selecting the chain you are working on, and then focusing on the specific use cases available through pop-cli. However, the change in the order you're proposing is relatively easy to implement. So, if we still believe it offers a better DevEx, I can make the adjustment.

@brunopgalvao
Copy link
Contributor

I don't personally like to have a list of chains. The users of this feature are devs, so in my opinion, the pop call parachain command is most useful when devs are actively working on a chain or smart contract and need to interact with it quickly.

For example, if I’m deploying a smart contract on the Pop Network that interacts with an NFT, I would want to run pop call parachain --pallet nft --extrinsic mint to mint the NFT locally or on a testnet with only 1 command. Similarly, if I need to test an XCM call, I may want to quickly fund an account on the relay chain.

For these two scenarios, I believe the current flow works best: first selecting the chain you are working on, and then focusing on the specific use cases available through pop-cli. However, the change in the order you're proposing is relatively easy to implement. So, if we still believe it offers a better DevEx, I can make the adjustment.

If the audience are devs, it makes sense what you are saying:

  1. Input a chain RPC URL
  2. Show what features are available

I would still have Pop Network as a default, pre-defined chain. So the flow would be like this:


◆  Which network would you like to interact with?
│  ● Pop Network
│  ○ Custom RPC
└  


The following will be shown if the user selects "Pop Network":


◆  On which Relay network?
│  ● Pop Network on Paseo (Polkadot’s Test Network)
│  ○ Pop Network on Polkadot
└  


The following will be shown if the user selects "Custom RPC":


◆  Enter a custom RPC URL:
│  e.g. rpc1.paseo.popnetwork.xyz
└  


◆  The following features are available on the selected network:
│  ● Create an asset
│  ○ Mint an asset 
│  ○ Create an NFT collection 
│  ○ Mint an NFT from an existing collection
│  ○ Transfer tokens from one account to another 
└  

Copy link
Contributor

@al3mart al3mart left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We are leaving the batch calls out of the not supported extrinsics, it should be fairly easy to address.

Other than that, looking good 👍

@AlexD10S
Copy link
Collaborator Author

AlexD10S commented Dec 8, 2024

We are leaving the batch calls out of the not supported extrinsics, it should be fairly easy to address.

Other than that, looking good 👍

Good point, solved in this commit 98aaae9

Copy link
Collaborator

@Daanvdplas Daanvdplas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few last nitpicks but the PR is looking fantastic, well done!

crates/pop-cli/src/commands/call/parachain.rs Outdated Show resolved Hide resolved
crates/pop-parachains/src/call/metadata/mod.rs Outdated Show resolved Hide resolved
crates/pop-parachains/src/call/metadata/params.rs Outdated Show resolved Hide resolved
crates/pop-parachains/src/call/metadata/params.rs Outdated Show resolved Hide resolved
crates/pop-cli/src/commands/call/parachain.rs Outdated Show resolved Hide resolved
crates/pop-common/src/signer.rs Show resolved Hide resolved
crates/pop-parachains/src/call/metadata/action.rs Outdated Show resolved Hide resolved
crates/pop-parachains/src/call/metadata/mod.rs Outdated Show resolved Hide resolved
crates/pop-parachains/src/call/metadata/params.rs Outdated Show resolved Hide resolved
@Daanvdplas Daanvdplas self-requested a review December 9, 2024 09:02
Copy link
Contributor

@al3mart al3mart left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for addressing my last comments. This is great!

AlexD10S and others added 6 commits December 9, 2024 15:57
* feat: submit extrinsic from call_data

* test: unit test for initialize_api_client

* test: unit test for send_extrinsic_from_call_data

* fix: CallData struct

* fix: skip_confirm for send_extrinsic_from_call_data

* chore: clippy

* chore: fmt

* refactor: minor doc and naming changes

* refactor: remove unnecesary clones and return early when submit_extrinsic_from_call_data

* chore: fmt

* refactor: split decode_call_data logic outside sign_and_submit_extrinsic_with_call_data
* feat: parse files when the argument values are very big

* test: unit test

* chore: fmt

* feat: file logic using the command line

* fix: sequence arguments

* test: fix unit test

* refactor: remove prompting the user if input is file or value

* refactor: parse_extrinsic_arguments

* fix: CI deny

* refactor: reorder Param  derive macros
…es (#366)

* feat: parse files when the argument values are very big

* chore: fmt

* feat: file logic using the command line

* fix: sequence arguments

* refactor: parse_extrinsic_arguments

* refactor: use Default in pop_parachain structs

* refactor: use Default in CallParachainCommand struct

* refactor: use constant in tests

* chore: fmt and small refactor
* feat: submit extrinsic from call_data

* test: unit test for initialize_api_client

* feat: wrap call into a sudo call

* test: add unit test to the new logic

* fix: skip_confirm for send_extrinsic_from_call_data

* chore: clippy

* docs: renaming and improve docs

* test: use force_transfer for testing

* fix: check if sudo exist before prompt the user

* chore: fmt

* chore: fmt

* test: fix wrong assert

* docs: improve comments and output messages

* refactor: split decode_call_data logic outside sign_and_submit_extrinsic_with_call_data

* fix: test construct_sudo_extrinsic_works and formatting
* refactor: sort pallets/dispatchables

* refactor: remove unnecessary async

* fix: resolve issue after rebase

* fix: more async issues after rebase

* refactor: use single constant
Cargo.toml Show resolved Hide resolved
* refactor: terminology

* refactor: simply pallet/function relationship

* fix: amend call_data conflicts after refactor
* fix: add missing short arg option

* refactor: note that extrinsic wait includes finalization

* refactor: remove clones

* style: formatting

* refactor: make file prompt more generic

* refactor: add missing license headers

* style: formatting

* docs: comments

* docs: comments

* docs: comments

* refactor: reuse existing metadata

* refactor: minimise clones

* docs: comments

* refactor: naming

* docs: fix parameter doc comments

* refactor: address clippy warnings
@al3mart
Copy link
Contributor

al3mart commented Dec 10, 2024

[sc-1841]

…in parachain as an alias (#373)

* refactor: rename parachain with chain in visible messages

* refactor: rename parachain with chain internal code

* chore: solve fmt after rebase

* refactor: small fix, use alias instead aliases

* refactor: rename CallParachain struct into Call
@evilrobot-01 evilrobot-01 self-requested a review December 10, 2024 12:24
Copy link
Contributor

@evilrobot-01 evilrobot-01 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All proposed fixes from review have been merged so happy to approve now. Thanks for you patience in addressing everything, glad to see this complete.

Thanks for all your hard work on this Alex!

crates/pop-common/src/signer.rs Show resolved Hide resolved
@AlexD10S AlexD10S merged commit e99f719 into main Dec 10, 2024
20 checks passed
@AlexD10S AlexD10S deleted the feat-call-ui-extrinsics-limited branch December 10, 2024 17:28
AlexD10S added a commit that referenced this pull request Dec 11, 2024
* feat: guide user for calling a contract

* feat: get metadata contract from the contract path

* refactor: refactor test and validate address input

* fix: apply feedback

* feat: prompt to have another call and skip questions for queries

* refactor: use Cli module instead of cliclack

* test: unit test pop-cli crate

* test: unit contracts crate

* chore: format

* test: refactor and improve test cases

* fix: fix todos and refactor

* test: fix unit test

* feat: parse types of parameters and display it to the user in the placeholder

* refactor: error handling for pop call

* refactor: display call to be executed after guide and reorder

* refactor: when repeat call use same contract values and dont clean screen

* test: add dry-run test

* test: refactor and add more test coverage

* test: more coverage

* fix: unit test

* feat: dev mode to skip certain user prompts

* refactor: test functions, renaming and fix clippy

* refactor: improve devex of pop call contract

* test: adjust tests to refactor

* chore: reset_for_new_call fields

* fix: build contract if has not been built

* refactor: use command state (#338)

Merged set_up_call_config and guide_user_to_call_contract into a single function. Also adds short symbols for arguments.

* fix: automatically add some or none to Option argument

* test: refactor and tests

* refactor: improve code and comments

* fix: renaming and clean code

* chore: option params not mandatory

* fix: parse user inputs for Option arguments in constructor (#335)

* fix: automatically add some or none to Option argument

* fix: tests

* refactor: process_function_args

* test: update tests accordingly last changes

* fix: issue with delimiter

* test: fix unit test

* refactor: renaming and fix comments

* refactor: format types (#339)

Shows the full type representation, making it easier to see the entry format of parameter values.

* fix: logo doesn't show in README

* feat: pop call parachain prototype

* feat: dispaly arguments of extrinsic

* refactor: structure similar to pop call contract

* feat: parse all values for extrinsic/storage

* refactor: signer in common

* refactor: improve messages

* feat: call parachain ui

* fix: calls working

* refactor: remove unused code

* refactor: remove unused code

* refactor: various fixes

* refactor: various fixes

* feat: add option to include params from command line

* refactor: clean docs and refactor code

* fix: tests

* refactor: parse all the metadata again

* refactor: reorganize and clean metadata functions

* feat: display specific use cases to the user

* refactor: predefined actions

* fix: various fixes

* fix: error message not supported for complex types

* refactor: parse all metadata, including parameters at once

* refactor: clean docs and move code

* fix: format_type

* fix: parse user inputs for Option arguments (#332)

* fix: automatically add some or none to Option argument

* test: refactor and tests

* refactor: improve code and comments

* fix: renaming and clean code

* chore: option params not mandatory

* fix: parse user inputs for Option arguments in constructor (#335)

* fix: automatically add some or none to Option argument

* fix: tests

* refactor: process_function_args

* test: update tests accordingly last changes

* fix: issue with delimiter

* test: fix unit test

* refactor: renaming and fix comments

* refactor: format types (#339)

Shows the full type representation, making it easier to see the entry format of parameter values.

* fix: logo doesn't show in README

---------

Co-authored-by: Frank Bell <[email protected]>
Co-authored-by: Alejandro Martinez Andres <[email protected]>

* test: fix unit test

* refactor: clean the way to parse and prompt parameters

* feat: add Purchase on-demand coretime use cases

* test: add skip_confirm, move when prompt for the signer and create the integration test

* test: call parachain ui unit test

* refactor: separate structs

* fmt

* test: pop-cli unit testing

* test: pop-common unit tests

* test: parse metadata unit tests

* test: refactor and test processing parameters

* test: comments and unit test in call functions

* fix: clippy warnings

* chore: fmt

* fix: solve conflicts and unit tests (#359)

* test: call parachain ui unit test

* test: pop-cli unit testing

* test: pop-common unit tests

* test: parse metadata unit tests

* test: refactor and test processing parameters

* test: comments and unit test in call functions

* fix: clippy warnings

* chore: fmt

* fix: conflicts and unit tests

* test: remove test and improve test

* feat: guide user for calling a contract

* feat: get metadata contract from the contract path

* refactor: refactor test and validate address input

* fix: apply feedback

* feat: prompt to have another call and skip questions for queries

* refactor: use Cli module instead of cliclack

* test: unit test pop-cli crate

* test: unit contracts crate

* chore: format

* test: refactor and improve test cases

* fix: fix todos and refactor

* test: fix unit test

* feat: parse types of parameters and display it to the user in the placeholder

* refactor: error handling for pop call

* refactor: display call to be executed after guide and reorder

* refactor: when repeat call use same contract values and dont clean screen

* test: add dry-run test

* test: refactor and add more test coverage

* test: more coverage

* fix: unit test

* feat: dev mode to skip certain user prompts

* refactor: test functions, renaming and fix clippy

* refactor: improve devex of pop call contract

* test: adjust tests to refactor

* chore: reset_for_new_call fields

* fix: build contract if has not been built

* refactor: use command state (#338)

Merged set_up_call_config and guide_user_to_call_contract into a single function. Also adds short symbols for arguments.

* fix: automatically add some or none to Option argument

* test: refactor and tests

* refactor: improve code and comments

* fix: renaming and clean code

* chore: option params not mandatory

* fix: parse user inputs for Option arguments in constructor (#335)

* fix: automatically add some or none to Option argument

* fix: tests

* refactor: process_function_args

* test: update tests accordingly last changes

* fix: issue with delimiter

* test: fix unit test

* refactor: renaming and fix comments

* refactor: format types (#339)

Shows the full type representation, making it easier to see the entry format of parameter values.

* feat: pop call parachain prototype

* feat: dispaly arguments of extrinsic

* refactor: structure similar to pop call contract

* feat: parse all values for extrinsic/storage

* refactor: signer in common

* refactor: improve messages

* feat: call parachain ui

* fix: calls working

* refactor: remove unused code

* refactor: remove unused code

* refactor: various fixes

* refactor: various fixes

* feat: add option to include params from command line

* refactor: clean docs and refactor code

* fix: tests

* refactor: parse all the metadata again

* refactor: reorganize and clean metadata functions

* feat: display specific use cases to the user

* refactor: predefined actions

* fix: various fixes

* fix: error message not supported for complex types

* refactor: parse all metadata, including parameters at once

* refactor: clean docs and move code

* fix: format_type

* test: fix unit test

* refactor: clean the way to parse and prompt parameters

* feat: add Purchase on-demand coretime use cases

* test: add skip_confirm, move when prompt for the signer and create the integration test

* test: call parachain ui unit test

* test: pop-cli unit testing

* test: pop-common unit tests

* test: parse metadata unit tests

* test: refactor and test processing parameters

* test: comments and unit test in call functions

* fix: clippy warnings

* chore: fmt

* feat: repeat call only if using guide UI

* fix: clippy

* refactor: various improvements

* chore: parser for pallet and extrinsic input names

* refactor: only move to pop_common the needed functions

* refactor: improve test, docs and errors

* test: fix unit tests

* fix: reset_for_new_call when extrinisc is not supported

* fix: build with parachain features

* test: wait before call parachain in integration test

* docs: minor improvements

* test: migrate find_free_port to pop_common

* test: fix increase waiting time

* test: remove unnecesary test case

* refactor: rename api with client

* refactor: naming and docs

* docs: improve docs and missing comments

* test: remove unnecesary verbose

* test: find_free_port

* docs: improve parameter documentation

* test: add missing test to sign_and_submit_extrinsic

* fix: apply feedback from auxiliar PRs, remove unnecesary clones

* docs: public modules

* refactor: clean unused params

* fix: mark all extrinsics that uses calls as parameter as unsupported

* test: fix expect_select

* docs: improve documentation

* feat: submit extrinsic from call_data (#348)

* feat: submit extrinsic from call_data

* test: unit test for initialize_api_client

* test: unit test for send_extrinsic_from_call_data

* fix: CallData struct

* fix: skip_confirm for send_extrinsic_from_call_data

* chore: clippy

* chore: fmt

* refactor: minor doc and naming changes

* refactor: remove unnecesary clones and return early when submit_extrinsic_from_call_data

* chore: fmt

* refactor: split decode_call_data logic outside sign_and_submit_extrinsic_with_call_data

* feat: parse files when the argument values are very big (#363)

* feat: parse files when the argument values are very big

* test: unit test

* chore: fmt

* feat: file logic using the command line

* fix: sequence arguments

* test: fix unit test

* refactor: remove prompting the user if input is file or value

* refactor: parse_extrinsic_arguments

* fix: CI deny

* refactor: reorder Param  derive macros

* test: fix decode_call_data_works unit test

* refactor: use Default derive macro and define constants for test values (#366)

* feat: parse files when the argument values are very big

* chore: fmt

* feat: file logic using the command line

* fix: sequence arguments

* refactor: parse_extrinsic_arguments

* refactor: use Default in pop_parachain structs

* refactor: use Default in CallParachainCommand struct

* refactor: use constant in tests

* chore: fmt and small refactor

* feat: flag sudo to wrap extrinsic (#349)

* feat: submit extrinsic from call_data

* test: unit test for initialize_api_client

* feat: wrap call into a sudo call

* test: add unit test to the new logic

* fix: skip_confirm for send_extrinsic_from_call_data

* chore: clippy

* docs: renaming and improve docs

* test: use force_transfer for testing

* fix: check if sudo exist before prompt the user

* chore: fmt

* chore: fmt

* test: fix wrong assert

* docs: improve comments and output messages

* refactor: split decode_call_data logic outside sign_and_submit_extrinsic_with_call_data

* fix: test construct_sudo_extrinsic_works and formatting

* refactor: various fixes and improvements (#367)

* refactor: sort pallets/dispatchables

* refactor: remove unnecessary async

* fix: resolve issue after rebase

* fix: more async issues after rebase

* refactor: use single constant

* refactor: terminology (#368)

* refactor: terminology

* refactor: simply pallet/function relationship

* fix: amend call_data conflicts after refactor

* refactor: improvements (#370)

* fix: add missing short arg option

* refactor: note that extrinsic wait includes finalization

* refactor: remove clones

* style: formatting

* refactor: make file prompt more generic

* refactor: add missing license headers

* style: formatting

* docs: comments

* docs: comments

* docs: comments

* refactor: reuse existing metadata

* refactor: minimise clones

* docs: comments

* refactor: naming

* docs: fix parameter doc comments

* refactor: address clippy warnings

* refactor: rename parachain with chain as the primary command and retain parachain as an alias (#373)

* refactor: rename parachain with chain in visible messages

* refactor: rename parachain with chain internal code

* chore: solve fmt after rebase

* refactor: small fix, use alias instead aliases

* refactor: rename CallParachain struct into Call

---------

Co-authored-by: Frank Bell <[email protected]>
Co-authored-by: Alejandro Martinez Andres <[email protected]>
Co-authored-by: Daanvdplas <[email protected]>
AlexD10S added a commit that referenced this pull request Dec 11, 2024
* feat: guide user for calling a contract

* feat: get metadata contract from the contract path

* refactor: refactor test and validate address input

* fix: apply feedback

* feat: prompt to have another call and skip questions for queries

* refactor: use Cli module instead of cliclack

* test: unit test pop-cli crate

* test: unit contracts crate

* chore: format

* test: refactor and improve test cases

* fix: fix todos and refactor

* test: fix unit test

* feat: parse types of parameters and display it to the user in the placeholder

* refactor: error handling for pop call

* refactor: display call to be executed after guide and reorder

* refactor: when repeat call use same contract values and dont clean screen

* test: add dry-run test

* test: refactor and add more test coverage

* test: more coverage

* fix: unit test

* feat: dev mode to skip certain user prompts

* refactor: test functions, renaming and fix clippy

* refactor: improve devex of pop call contract

* test: adjust tests to refactor

* chore: reset_for_new_call fields

* fix: build contract if has not been built

* refactor: use command state (#338)

Merged set_up_call_config and guide_user_to_call_contract into a single function. Also adds short symbols for arguments.

* fix: automatically add some or none to Option argument

* test: refactor and tests

* refactor: improve code and comments

* fix: renaming and clean code

* chore: option params not mandatory

* fix: parse user inputs for Option arguments in constructor (#335)

* fix: automatically add some or none to Option argument

* fix: tests

* refactor: process_function_args

* test: update tests accordingly last changes

* fix: issue with delimiter

* test: fix unit test

* refactor: renaming and fix comments

* refactor: format types (#339)

Shows the full type representation, making it easier to see the entry format of parameter values.

* fix: logo doesn't show in README

* feat: pop call parachain prototype

* feat: dispaly arguments of extrinsic

* refactor: structure similar to pop call contract

* feat: parse all values for extrinsic/storage

* refactor: signer in common

* refactor: improve messages

* feat: call parachain ui

* fix: calls working

* refactor: remove unused code

* refactor: remove unused code

* refactor: various fixes

* refactor: various fixes

* feat: add option to include params from command line

* refactor: clean docs and refactor code

* fix: tests

* refactor: parse all the metadata again

* refactor: reorganize and clean metadata functions

* feat: display specific use cases to the user

* refactor: predefined actions

* fix: various fixes

* fix: error message not supported for complex types

* refactor: parse all metadata, including parameters at once

* refactor: clean docs and move code

* fix: format_type

* fix: parse user inputs for Option arguments (#332)

* fix: automatically add some or none to Option argument

* test: refactor and tests

* refactor: improve code and comments

* fix: renaming and clean code

* chore: option params not mandatory

* fix: parse user inputs for Option arguments in constructor (#335)

* fix: automatically add some or none to Option argument

* fix: tests

* refactor: process_function_args

* test: update tests accordingly last changes

* fix: issue with delimiter

* test: fix unit test

* refactor: renaming and fix comments

* refactor: format types (#339)

Shows the full type representation, making it easier to see the entry format of parameter values.

* fix: logo doesn't show in README

---------

Co-authored-by: Frank Bell <[email protected]>
Co-authored-by: Alejandro Martinez Andres <[email protected]>

* test: fix unit test

* refactor: clean the way to parse and prompt parameters

* feat: add Purchase on-demand coretime use cases

* test: add skip_confirm, move when prompt for the signer and create the integration test

* test: call parachain ui unit test

* refactor: separate structs

* fmt

* test: pop-cli unit testing

* test: pop-common unit tests

* test: parse metadata unit tests

* test: refactor and test processing parameters

* test: comments and unit test in call functions

* fix: clippy warnings

* chore: fmt

* fix: solve conflicts and unit tests (#359)

* test: call parachain ui unit test

* test: pop-cli unit testing

* test: pop-common unit tests

* test: parse metadata unit tests

* test: refactor and test processing parameters

* test: comments and unit test in call functions

* fix: clippy warnings

* chore: fmt

* fix: conflicts and unit tests

* test: remove test and improve test

* feat: guide user for calling a contract

* feat: get metadata contract from the contract path

* refactor: refactor test and validate address input

* fix: apply feedback

* feat: prompt to have another call and skip questions for queries

* refactor: use Cli module instead of cliclack

* test: unit test pop-cli crate

* test: unit contracts crate

* chore: format

* test: refactor and improve test cases

* fix: fix todos and refactor

* test: fix unit test

* feat: parse types of parameters and display it to the user in the placeholder

* refactor: error handling for pop call

* refactor: display call to be executed after guide and reorder

* refactor: when repeat call use same contract values and dont clean screen

* test: add dry-run test

* test: refactor and add more test coverage

* test: more coverage

* fix: unit test

* feat: dev mode to skip certain user prompts

* refactor: test functions, renaming and fix clippy

* refactor: improve devex of pop call contract

* test: adjust tests to refactor

* chore: reset_for_new_call fields

* fix: build contract if has not been built

* refactor: use command state (#338)

Merged set_up_call_config and guide_user_to_call_contract into a single function. Also adds short symbols for arguments.

* fix: automatically add some or none to Option argument

* test: refactor and tests

* refactor: improve code and comments

* fix: renaming and clean code

* chore: option params not mandatory

* fix: parse user inputs for Option arguments in constructor (#335)

* fix: automatically add some or none to Option argument

* fix: tests

* refactor: process_function_args

* test: update tests accordingly last changes

* fix: issue with delimiter

* test: fix unit test

* refactor: renaming and fix comments

* refactor: format types (#339)

Shows the full type representation, making it easier to see the entry format of parameter values.

* feat: pop call parachain prototype

* feat: dispaly arguments of extrinsic

* refactor: structure similar to pop call contract

* feat: parse all values for extrinsic/storage

* refactor: signer in common

* refactor: improve messages

* feat: call parachain ui

* fix: calls working

* refactor: remove unused code

* refactor: remove unused code

* refactor: various fixes

* refactor: various fixes

* feat: add option to include params from command line

* refactor: clean docs and refactor code

* fix: tests

* refactor: parse all the metadata again

* refactor: reorganize and clean metadata functions

* feat: display specific use cases to the user

* refactor: predefined actions

* fix: various fixes

* fix: error message not supported for complex types

* refactor: parse all metadata, including parameters at once

* refactor: clean docs and move code

* fix: format_type

* test: fix unit test

* refactor: clean the way to parse and prompt parameters

* feat: add Purchase on-demand coretime use cases

* test: add skip_confirm, move when prompt for the signer and create the integration test

* test: call parachain ui unit test

* test: pop-cli unit testing

* test: pop-common unit tests

* test: parse metadata unit tests

* test: refactor and test processing parameters

* test: comments and unit test in call functions

* fix: clippy warnings

* chore: fmt

* feat: repeat call only if using guide UI

* fix: clippy

* refactor: various improvements

* chore: parser for pallet and extrinsic input names

* refactor: only move to pop_common the needed functions

* refactor: improve test, docs and errors

* test: fix unit tests

* fix: reset_for_new_call when extrinisc is not supported

* fix: build with parachain features

* test: wait before call parachain in integration test

* docs: minor improvements

* test: migrate find_free_port to pop_common

* test: fix increase waiting time

* test: remove unnecesary test case

* refactor: rename api with client

* refactor: naming and docs

* docs: improve docs and missing comments

* test: remove unnecesary verbose

* test: find_free_port

* docs: improve parameter documentation

* test: add missing test to sign_and_submit_extrinsic

* fix: apply feedback from auxiliar PRs, remove unnecesary clones

* docs: public modules

* refactor: clean unused params

* fix: mark all extrinsics that uses calls as parameter as unsupported

* test: fix expect_select

* docs: improve documentation

* feat: submit extrinsic from call_data (#348)

* feat: submit extrinsic from call_data

* test: unit test for initialize_api_client

* test: unit test for send_extrinsic_from_call_data

* fix: CallData struct

* fix: skip_confirm for send_extrinsic_from_call_data

* chore: clippy

* chore: fmt

* refactor: minor doc and naming changes

* refactor: remove unnecesary clones and return early when submit_extrinsic_from_call_data

* chore: fmt

* refactor: split decode_call_data logic outside sign_and_submit_extrinsic_with_call_data

* feat: parse files when the argument values are very big (#363)

* feat: parse files when the argument values are very big

* test: unit test

* chore: fmt

* feat: file logic using the command line

* fix: sequence arguments

* test: fix unit test

* refactor: remove prompting the user if input is file or value

* refactor: parse_extrinsic_arguments

* fix: CI deny

* refactor: reorder Param  derive macros

* test: fix decode_call_data_works unit test

* refactor: use Default derive macro and define constants for test values (#366)

* feat: parse files when the argument values are very big

* chore: fmt

* feat: file logic using the command line

* fix: sequence arguments

* refactor: parse_extrinsic_arguments

* refactor: use Default in pop_parachain structs

* refactor: use Default in CallParachainCommand struct

* refactor: use constant in tests

* chore: fmt and small refactor

* feat: flag sudo to wrap extrinsic (#349)

* feat: submit extrinsic from call_data

* test: unit test for initialize_api_client

* feat: wrap call into a sudo call

* test: add unit test to the new logic

* fix: skip_confirm for send_extrinsic_from_call_data

* chore: clippy

* docs: renaming and improve docs

* test: use force_transfer for testing

* fix: check if sudo exist before prompt the user

* chore: fmt

* chore: fmt

* test: fix wrong assert

* docs: improve comments and output messages

* refactor: split decode_call_data logic outside sign_and_submit_extrinsic_with_call_data

* fix: test construct_sudo_extrinsic_works and formatting

* refactor: various fixes and improvements (#367)

* refactor: sort pallets/dispatchables

* refactor: remove unnecessary async

* fix: resolve issue after rebase

* fix: more async issues after rebase

* refactor: use single constant

* refactor: terminology (#368)

* refactor: terminology

* refactor: simply pallet/function relationship

* fix: amend call_data conflicts after refactor

* refactor: improvements (#370)

* fix: add missing short arg option

* refactor: note that extrinsic wait includes finalization

* refactor: remove clones

* style: formatting

* refactor: make file prompt more generic

* refactor: add missing license headers

* style: formatting

* docs: comments

* docs: comments

* docs: comments

* refactor: reuse existing metadata

* refactor: minimise clones

* docs: comments

* refactor: naming

* docs: fix parameter doc comments

* refactor: address clippy warnings

* refactor: rename parachain with chain as the primary command and retain parachain as an alias (#373)

* refactor: rename parachain with chain in visible messages

* refactor: rename parachain with chain internal code

* chore: solve fmt after rebase

* refactor: small fix, use alias instead aliases

* refactor: rename CallParachain struct into Call

---------

Co-authored-by: Frank Bell <[email protected]>
Co-authored-by: Alejandro Martinez Andres <[email protected]>
Co-authored-by: Daanvdplas <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ready-for-final-review The PR is ready for final review
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants