From d5efa44c0fb4e7653dc1f3c9f5e72970e8a4b47d Mon Sep 17 00:00:00 2001 From: ltacker Date: Wed, 19 Oct 2022 17:33:27 -0500 Subject: [PATCH 01/13] refactor service --- ignite/services/network/join.go | 62 ++++++++++++++++++++++++++++-- ignite/services/network/publish.go | 55 -------------------------- 2 files changed, 58 insertions(+), 59 deletions(-) diff --git a/ignite/services/network/join.go b/ignite/services/network/join.go index d0c528a4a3..3c12c8f96d 100644 --- a/ignite/services/network/join.go +++ b/ignite/services/network/join.go @@ -85,16 +85,70 @@ func (n Network) Join( } if !o.accountAmount.IsZero() { - if err := n.sendAccountRequest(ctx, launchID, accountAddress, o.accountAmount); err != nil { + if err := n.SendAccountRequest(ctx, launchID, accountAddress, o.accountAmount); err != nil { return err } } - return n.sendValidatorRequest(ctx, launchID, peer, accountAddress, gentx, gentxInfo) + return n.SendValidatorRequest(ctx, launchID, peer, accountAddress, gentx, gentxInfo) } -// sendValidatorRequest creates the RequestAddValidator message into the SPN -func (n Network) sendValidatorRequest( +func (n Network) SendAccountRequestForCoordinator(ctx context.Context, launchID uint64, amount sdk.Coins) error { + addr, err := n.account.Address(networktypes.SPN) + if err != nil { + return err + } + + return n.SendAccountRequest(ctx, launchID, addr, amount) +} + +// SendAccountRequest creates an add AddAccount request message. +func (n Network) SendAccountRequest( + ctx context.Context, + launchID uint64, + address string, + amount sdk.Coins, +) error { + addr, err := n.account.Address(networktypes.SPN) + if err != nil { + return err + } + + msg := launchtypes.NewMsgSendRequest( + addr, + launchID, + launchtypes.NewGenesisAccount( + launchID, + address, + amount, + ), + ) + + n.ev.Send("Broadcasting account transactions", events.ProgressStarted()) + + res, err := n.cosmos.BroadcastTx(ctx, n.account, msg) + if err != nil { + return err + } + + var requestRes launchtypes.MsgSendRequestResponse + if err := res.Decode(&requestRes); err != nil { + return err + } + + if requestRes.AutoApproved { + n.ev.Send("Account added to the network by the coordinator!", events.ProgressFinished()) + } else { + n.ev.Send( + fmt.Sprintf("Request %d to add account to the network has been submitted!", requestRes.RequestID), + events.ProgressFinished(), + ) + } + return nil +} + +// SendValidatorRequest creates the RequestAddValidator message into the SPN +func (n Network) SendValidatorRequest( ctx context.Context, launchID uint64, peer launchtypes.Peer, diff --git a/ignite/services/network/publish.go b/ignite/services/network/publish.go index 43a0acf9d3..f5970359de 100644 --- a/ignite/services/network/publish.go +++ b/ignite/services/network/publish.go @@ -2,7 +2,6 @@ package network import ( "context" - "fmt" "os" "path/filepath" @@ -262,57 +261,3 @@ func (n Network) Publish(ctx context.Context, c Chain, options ...PublishOption) return launchID, campaignID, nil } - -func (n Network) SendAccountRequestForCoordinator(ctx context.Context, launchID uint64, amount sdk.Coins) error { - addr, err := n.account.Address(networktypes.SPN) - if err != nil { - return err - } - - return n.sendAccountRequest(ctx, launchID, addr, amount) -} - -// SendAccountRequest creates an add AddAccount request message. -func (n Network) sendAccountRequest( - ctx context.Context, - launchID uint64, - address string, - amount sdk.Coins, -) error { - addr, err := n.account.Address(networktypes.SPN) - if err != nil { - return err - } - - msg := launchtypes.NewMsgSendRequest( - addr, - launchID, - launchtypes.NewGenesisAccount( - launchID, - address, - amount, - ), - ) - - n.ev.Send("Broadcasting account transactions", events.ProgressStarted()) - - res, err := n.cosmos.BroadcastTx(ctx, n.account, msg) - if err != nil { - return err - } - - var requestRes launchtypes.MsgSendRequestResponse - if err := res.Decode(&requestRes); err != nil { - return err - } - - if requestRes.AutoApproved { - n.ev.Send("Account added to the network by the coordinator!", events.ProgressFinished()) - } else { - n.ev.Send( - fmt.Sprintf("Request %d to add account to the network has been submitted!", requestRes.RequestID), - events.ProgressFinished(), - ) - } - return nil -} From 52d2bc9ea68797cd44b30e48075fd827ece15c70 Mon Sep 17 00:00:00 2001 From: ltacker Date: Wed, 19 Oct 2022 18:15:24 -0500 Subject: [PATCH 02/13] command --- ignite/cmd/network_request_add_account.go | 92 +++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 ignite/cmd/network_request_add_account.go diff --git a/ignite/cmd/network_request_add_account.go b/ignite/cmd/network_request_add_account.go new file mode 100644 index 0000000000..518b0bbd02 --- /dev/null +++ b/ignite/cmd/network_request_add_account.go @@ -0,0 +1,92 @@ +package ignitecmd + +import ( + "fmt" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/spf13/cobra" + + "github.com/ignite/cli/ignite/pkg/cliui" + "github.com/ignite/cli/ignite/services/network" + "github.com/ignite/cli/ignite/services/network/networkchain" +) + +// NewNetworkRequestAddAccount creates a new command to send add account request +func NewNetworkRequestAddAccount() *cobra.Command { + c := &cobra.Command{ + Use: "add-account [launch-id] [address] [coins]", + Short: "Send request to add account", + RunE: networkRequestAddAccountHandler, + Args: cobra.MaximumNArgs(3), + } + + flagSetClearCache(c) + c.Flags().AddFlagSet(flagNetworkFrom()) + c.Flags().AddFlagSet(flagSetHome()) + c.Flags().AddFlagSet(flagSetKeyringBackend()) + c.Flags().AddFlagSet(flagSetKeyringDir()) + return c +} + +func networkRequestAddAccountHandler(cmd *cobra.Command, args []string) error { + session := cliui.New(cliui.StartSpinner()) + defer session.End() + + nb, err := newNetworkBuilder(cmd, CollectEvents(session.EventBus())) + if err != nil { + return err + } + + // parse launch ID + launchID, err := network.ParseID(args[0]) + if err != nil { + return err + } + + address := args[1] + + n, err := nb.Network() + if err != nil { + return err + } + + chainLaunch, err := n.ChainLaunch(cmd.Context(), launchID) + if err != nil { + return err + } + + var networkOptions []networkchain.Option + + if flagGetCheckDependencies(cmd) { + networkOptions = append(networkOptions, networkchain.CheckDependencies()) + } + + c, err := nb.Chain(networkchain.SourceLaunch(chainLaunch), networkOptions...) + if err != nil { + return err + } + + var balance sdk.Coins + if c.IsAccountBalanceFixed() { + balance = c.AccountBalance() + if len(args) == 3 { + return fmt.Errorf( + "balance can't be provided, balance has been set by coordinator to %s", + balance.String(), + ) + } + } else { + balanceStr := args[2] + balance, err = sdk.ParseCoinsNormalized(balanceStr) + if err != nil { + return err + } + } + + return n.SendAccountRequest( + cmd.Context(), + launchID, + address, + balance, + ) +} From bedeb85cb1b873bf9c8ebf24a4804e2edccecfba Mon Sep 17 00:00:00 2001 From: ltacker Date: Wed, 19 Oct 2022 18:15:52 -0500 Subject: [PATCH 03/13] add command --- ignite/cmd/network_request.go | 1 + 1 file changed, 1 insertion(+) diff --git a/ignite/cmd/network_request.go b/ignite/cmd/network_request.go index 7249c9a216..49e37b9c02 100644 --- a/ignite/cmd/network_request.go +++ b/ignite/cmd/network_request.go @@ -16,6 +16,7 @@ func NewNetworkRequest() *cobra.Command { NewNetworkRequestApprove(), NewNetworkRequestReject(), NewNetworkRequestVerify(), + NewNetworkRequestAddAccount(), ) return c From 34402eb1ed25cfc23cbf1531766e201bb5b48f3c Mon Sep 17 00:00:00 2001 From: ltacker Date: Wed, 19 Oct 2022 18:32:05 -0500 Subject: [PATCH 04/13] improve error --- ignite/cmd/network_request_add_account.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ignite/cmd/network_request_add_account.go b/ignite/cmd/network_request_add_account.go index 518b0bbd02..4242a653e9 100644 --- a/ignite/cmd/network_request_add_account.go +++ b/ignite/cmd/network_request_add_account.go @@ -1,6 +1,7 @@ package ignitecmd import ( + "errors" "fmt" sdk "github.com/cosmos/cosmos-sdk/types" @@ -17,7 +18,7 @@ func NewNetworkRequestAddAccount() *cobra.Command { Use: "add-account [launch-id] [address] [coins]", Short: "Send request to add account", RunE: networkRequestAddAccountHandler, - Args: cobra.MaximumNArgs(3), + Args: cobra.RangeArgs(2, 3), } flagSetClearCache(c) @@ -76,6 +77,9 @@ func networkRequestAddAccountHandler(cmd *cobra.Command, args []string) error { ) } } else { + if len(args) < 3 { + return errors.New("account balance expected") + } balanceStr := args[2] balance, err = sdk.ParseCoinsNormalized(balanceStr) if err != nil { From a307e2d1c64715df99b9dfa4cc6768da3664b718 Mon Sep 17 00:00:00 2001 From: ltacker Date: Wed, 19 Oct 2022 20:22:54 -0500 Subject: [PATCH 05/13] changelog --- changelog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.md b/changelog.md index 1f40b82640..a6aa357fa5 100644 --- a/changelog.md +++ b/changelog.md @@ -9,6 +9,7 @@ - Add `ignite network validator` command set. - Move cosmoscmd in chain's templates. - Add generated TS client test support to integration tests. +- Add `ignite network request add-account` command. ### Changes From bae069c8d524d0c8745a55d020fff5830afacf70 Mon Sep 17 00:00:00 2001 From: Lucas Bertrand Date: Thu, 20 Oct 2022 16:11:06 +0200 Subject: [PATCH 06/13] Update ignite/services/network/join.go MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jerónimo Albi --- ignite/services/network/join.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ignite/services/network/join.go b/ignite/services/network/join.go index 3c12c8f96d..8ab1135978 100644 --- a/ignite/services/network/join.go +++ b/ignite/services/network/join.go @@ -137,10 +137,15 @@ func (n Network) SendAccountRequest( } if requestRes.AutoApproved { - n.ev.Send("Account added to the network by the coordinator!", events.ProgressFinished()) + n.ev.Send( + "Account added to the network by the coordinator!", + events.Icon(icons.Bullet), + events.ProgressFinished(), + ) } else { n.ev.Send( fmt.Sprintf("Request %d to add account to the network has been submitted!", requestRes.RequestID), + events.Icon(icons.Bullet), events.ProgressFinished(), ) } From a290b7ac74b03556580b8b7d550bc7963ae74160 Mon Sep 17 00:00:00 2001 From: ltacker Date: Thu, 20 Oct 2022 09:13:18 -0500 Subject: [PATCH 07/13] remove unused --- ignite/cmd/network_request_add_account.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/ignite/cmd/network_request_add_account.go b/ignite/cmd/network_request_add_account.go index 4242a653e9..f5367e2640 100644 --- a/ignite/cmd/network_request_add_account.go +++ b/ignite/cmd/network_request_add_account.go @@ -58,10 +58,6 @@ func networkRequestAddAccountHandler(cmd *cobra.Command, args []string) error { var networkOptions []networkchain.Option - if flagGetCheckDependencies(cmd) { - networkOptions = append(networkOptions, networkchain.CheckDependencies()) - } - c, err := nb.Chain(networkchain.SourceLaunch(chainLaunch), networkOptions...) if err != nil { return err From 879055d8367c43c4e33fc3a3e642a71c1f7fc032 Mon Sep 17 00:00:00 2001 From: ltacker Date: Thu, 20 Oct 2022 09:15:03 -0500 Subject: [PATCH 08/13] changelog --- changelog.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/changelog.md b/changelog.md index 86ce890783..b4ba429a5f 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,11 @@ # Changelog +## Unreleased + +### Features + +- Add `ignite network request add-account` command. + ## [`v0.25.0`](https://github.com/ignite/cli/releases/tag/v0.25.0) ### Features @@ -9,7 +15,6 @@ - Add `ignite network validator` command set. - Deprecate `cosmoscmd` pkg and add cmd templates for scaffolding. - Add generated TS client test support to integration tests. -- Add `ignite network request add-account` command. ### Changes From 10fe050c686bd091625c702e23ebd86d48ea5b3d Mon Sep 17 00:00:00 2001 From: ltacker Date: Thu, 20 Oct 2022 09:16:00 -0500 Subject: [PATCH 09/13] import --- ignite/services/network/join.go | 1 + 1 file changed, 1 insertion(+) diff --git a/ignite/services/network/join.go b/ignite/services/network/join.go index 8ab1135978..7db0af07b8 100644 --- a/ignite/services/network/join.go +++ b/ignite/services/network/join.go @@ -7,6 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" launchtypes "github.com/tendermint/spn/x/launch/types" + "github.com/ignite/cli/ignite/pkg/cliui/icons" "github.com/ignite/cli/ignite/pkg/cosmosutil" "github.com/ignite/cli/ignite/pkg/events" "github.com/ignite/cli/ignite/pkg/xurl" From 57c69f9b140d8d23879a50c18c266736ba763832 Mon Sep 17 00:00:00 2001 From: Lucas Bertrand Date: Thu, 20 Oct 2022 18:46:40 +0200 Subject: [PATCH 10/13] Update ignite/cmd/network_request_add_account.go MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jerónimo Albi --- ignite/cmd/network_request_add_account.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ignite/cmd/network_request_add_account.go b/ignite/cmd/network_request_add_account.go index f5367e2640..aca9ec897e 100644 --- a/ignite/cmd/network_request_add_account.go +++ b/ignite/cmd/network_request_add_account.go @@ -56,9 +56,7 @@ func networkRequestAddAccountHandler(cmd *cobra.Command, args []string) error { return err } - var networkOptions []networkchain.Option - - c, err := nb.Chain(networkchain.SourceLaunch(chainLaunch), networkOptions...) + c, err := nb.Chain(networkchain.SourceLaunch(chainLaunch)) if err != nil { return err } From 7555bab5ee9feec8c11c58fa981331fbbe8bd1f7 Mon Sep 17 00:00:00 2001 From: Lucas Bertrand Date: Thu, 20 Oct 2022 18:46:56 +0200 Subject: [PATCH 11/13] Update changelog.md Co-authored-by: Alex Johnson --- changelog.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog.md b/changelog.md index b4ba429a5f..3e52dca556 100644 --- a/changelog.md +++ b/changelog.md @@ -4,7 +4,7 @@ ### Features -- Add `ignite network request add-account` command. +- [#2955](https://github.com/ignite/cli/pull/2955/) Add `ignite network request add-account` command. ## [`v0.25.0`](https://github.com/ignite/cli/releases/tag/v0.25.0) From b0cb78eeb59b5475990021747db01a7c70f848dc Mon Sep 17 00:00:00 2001 From: Lucas Bertrand Date: Thu, 20 Oct 2022 18:47:16 +0200 Subject: [PATCH 12/13] Update ignite/cmd/network_request_add_account.go Co-authored-by: Thomas Bruyelle --- ignite/cmd/network_request_add_account.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ignite/cmd/network_request_add_account.go b/ignite/cmd/network_request_add_account.go index aca9ec897e..97f8255c0d 100644 --- a/ignite/cmd/network_request_add_account.go +++ b/ignite/cmd/network_request_add_account.go @@ -15,7 +15,7 @@ import ( // NewNetworkRequestAddAccount creates a new command to send add account request func NewNetworkRequestAddAccount() *cobra.Command { c := &cobra.Command{ - Use: "add-account [launch-id] [address] [coins]", + Use: "add-account launch-id address [coins]", Short: "Send request to add account", RunE: networkRequestAddAccountHandler, Args: cobra.RangeArgs(2, 3), From 6a64b62e8a745704c9d82941b1acefd41061c447 Mon Sep 17 00:00:00 2001 From: ltacker Date: Thu, 20 Oct 2022 11:58:35 -0500 Subject: [PATCH 13/13] revert command --- ignite/cmd/network_request_add_account.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ignite/cmd/network_request_add_account.go b/ignite/cmd/network_request_add_account.go index 97f8255c0d..aca9ec897e 100644 --- a/ignite/cmd/network_request_add_account.go +++ b/ignite/cmd/network_request_add_account.go @@ -15,7 +15,7 @@ import ( // NewNetworkRequestAddAccount creates a new command to send add account request func NewNetworkRequestAddAccount() *cobra.Command { c := &cobra.Command{ - Use: "add-account launch-id address [coins]", + Use: "add-account [launch-id] [address] [coins]", Short: "Send request to add account", RunE: networkRequestAddAccountHandler, Args: cobra.RangeArgs(2, 3),