Skip to content

Commit

Permalink
feat(network): add network campaign list and show commands (ignit…
Browse files Browse the repository at this point in the history
…e#2100)

* add campaign info command

* add campaign show command

* apply pr review discussions

* remove unused method call
  • Loading branch information
Pantani authored Feb 23, 2022
1 parent 46e94b0 commit 5d9959e
Show file tree
Hide file tree
Showing 24 changed files with 248 additions and 32 deletions.
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ require (
github.com/stretchr/testify v1.7.0
github.com/takuoki/gocase v1.0.0
github.com/tendermint/flutter/v2 v2.0.3
github.com/tendermint/spn v0.1.1-0.20220201164838-2464b6474c82
github.com/tendermint/spn v0.1.1-0.20220217212620-bb39a868898e
github.com/tendermint/tendermint v0.34.14
github.com/tendermint/tm-db v0.6.4
github.com/tendermint/vue v0.3.0
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -1510,8 +1510,8 @@ github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoM
github.com/tendermint/spm v0.1.5/go.mod h1:+rHrI1axfSX1R0DY6KA4IbrHPgJ0WVNJKhey71ulXO8=
github.com/tendermint/spm v0.1.8/go.mod h1:iHgfQ5YOI6ONc9E7ugGQolVdfSMHpeXfZ/OpXuN/42Q=
github.com/tendermint/spn v0.1.1-0.20211210094128-4ca78a240c57/go.mod h1:p4BO8YC6kOKSKqMfySqaLHfwBmuPE/QcLwnnVhh7H9M=
github.com/tendermint/spn v0.1.1-0.20220201164838-2464b6474c82 h1:qxeAiKDPJ/Yw2dtNp2lLRV1bqEc0UKidoOhXOzLS0iQ=
github.com/tendermint/spn v0.1.1-0.20220201164838-2464b6474c82/go.mod h1:aPUMZ2zCuwpu98HIhaG+hWjOKgw23k5202P0LAIbFHw=
github.com/tendermint/spn v0.1.1-0.20220217212620-bb39a868898e h1:7ToGHB8AiaqKHtKWG7LzR5CMM+FxVoUhpwWLLdTiM6w=
github.com/tendermint/spn v0.1.1-0.20220217212620-bb39a868898e/go.mod h1:aPUMZ2zCuwpu98HIhaG+hWjOKgw23k5202P0LAIbFHw=
github.com/tendermint/starport v0.19.3/go.mod h1:1BlPohoDtLl8CFqTHbMSN3rhq5YLBHlTQ9mJhcRuvwI=
github.com/tendermint/tendermint v0.34.0-rc4/go.mod h1:yotsojf2C1QBOw4dZrTcxbyxmPUrT4hNuOQWX9XUwB4=
github.com/tendermint/tendermint v0.34.0-rc6/go.mod h1:ugzyZO5foutZImv0Iyx/gOFCX6mjJTgbLHTwi17VDVg=
Expand Down
1 change: 1 addition & 0 deletions starport/cmd/network.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ func NewNetwork() *cobra.Command {
// add sub commands.
c.AddCommand(
NewNetworkChain(),
NewNetworkCampaign(),
NewNetworkRequest(),
)

Expand Down
21 changes: 21 additions & 0 deletions starport/cmd/network_campaign.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package starportcmd

import (
"github.com/spf13/cobra"
)

// NewNetworkCampaign creates a new campaign command that holds other
// subcommands related to launching a network for a campaign.
func NewNetworkCampaign() *cobra.Command {
c := &cobra.Command{
Use: "campaign",
Short: "Handle campaigns",
}

c.AddCommand(
NewNetworkCampaignList(),
NewNetworkCampaignShow(),
)

return c
}
73 changes: 73 additions & 0 deletions starport/cmd/network_campaign_list.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
package starportcmd

import (
"fmt"
"io"
"os"

"github.com/spf13/cobra"

"github.com/tendermint/starport/starport/pkg/entrywriter"
"github.com/tendermint/starport/starport/services/network/networktypes"
)

var CampaignSummaryHeader = []string{
"id",
"name",
"coordinator id",
"mainnet id",
}

// NewNetworkCampaignList returns a new command to list all published campaigns on Starport Network.
func NewNetworkCampaignList() *cobra.Command {
c := &cobra.Command{
Use: "list",
Short: "List published campaigns",
Args: cobra.NoArgs,
RunE: networkCampaignListHandler,
}
c.Flags().AddFlagSet(flagNetworkFrom())
c.Flags().AddFlagSet(flagSetKeyringBackend())
c.Flags().AddFlagSet(flagSetHome())
return c
}

func networkCampaignListHandler(cmd *cobra.Command, args []string) error {
nb, err := newNetworkBuilder(cmd)
if err != nil {
return err
}

n, err := nb.Network()
if err != nil {
return err
}
campaigns, err := n.Campaigns(cmd.Context())
if err != nil {
return err
}

nb.Cleanup()
return renderCampaignSummaries(campaigns, os.Stdout)
}

// renderCampaignSummaries writes into the provided out, the list of summarized campaigns
func renderCampaignSummaries(campaigns []networktypes.Campaign, out io.Writer) error {
var campaignEntries [][]string

for _, c := range campaigns {
mainnetID := entrywriter.None
if c.MainnetInitialized {
mainnetID = fmt.Sprintf("%d", c.MainnetID)
}

campaignEntries = append(campaignEntries, []string{
fmt.Sprintf("%d", c.ID),
c.Name,
fmt.Sprintf("%d", c.CoordinatorID),
mainnetID,
})
}

return entrywriter.MustWrite(out, CampaignSummaryHeader, campaignEntries...)
}
56 changes: 56 additions & 0 deletions starport/cmd/network_campaign_show.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package starportcmd

import (
"fmt"

"github.com/spf13/cobra"

"github.com/tendermint/starport/starport/pkg/yaml"
"github.com/tendermint/starport/starport/services/network"
)

// NewNetworkCampaignShow returns a new command to show published campaign on Starport Network
func NewNetworkCampaignShow() *cobra.Command {
c := &cobra.Command{
Use: "show [campaign-id]",
Short: "Show published campaign",
Args: cobra.ExactArgs(1),
RunE: networkCampaignShowHandler,
}
c.Flags().AddFlagSet(flagNetworkFrom())
c.Flags().AddFlagSet(flagSetKeyringBackend())
c.Flags().AddFlagSet(flagSetHome())
return c
}

func networkCampaignShowHandler(cmd *cobra.Command, args []string) error {
// parse campaign ID
campaignID, err := network.ParseID(args[0])
if err != nil {
return err
}

nb, err := newNetworkBuilder(cmd)
if err != nil {
return err
}
defer nb.Cleanup()

n, err := nb.Network()
if err != nil {
return err
}
campaign, err := n.Campaign(cmd.Context(), campaignID)
if err != nil {
return err
}

info, err := yaml.Marshal(cmd.Context(), campaign)
if err != nil {
return err
}

nb.Spinner.Stop()
fmt.Print(info)
return nil
}
6 changes: 1 addition & 5 deletions starport/cmd/network_chain_init.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import (

"github.com/tendermint/starport/starport/pkg/cliquiz"
"github.com/tendermint/starport/starport/pkg/clispinner"
"github.com/tendermint/starport/starport/pkg/cosmosaccount"
"github.com/tendermint/starport/starport/pkg/cosmosutil"
"github.com/tendermint/starport/starport/services/chain"
"github.com/tendermint/starport/starport/services/network"
Expand All @@ -34,8 +33,6 @@ func NewNetworkChainInit() *cobra.Command {
Args: cobra.ExactArgs(1),
RunE: networkChainInitHandler,
}

c.Flags().String(flagValidatorAccount, cosmosaccount.DefaultAccount, "Account for the chain validator")
c.Flags().String(flagValidatorWebsite, "", "Associate a website with the validator")
c.Flags().String(flagValidatorDetails, "", "Details about the validator")
c.Flags().String(flagValidatorSecurityContact, "", "Validator security contact email")
Expand All @@ -47,7 +44,6 @@ func NewNetworkChainInit() *cobra.Command {
c.Flags().AddFlagSet(flagSetHome())
c.Flags().AddFlagSet(flagSetKeyringBackend())
c.Flags().AddFlagSet(flagSetYes())

return c
}

Expand All @@ -59,7 +55,7 @@ func networkChainInitHandler(cmd *cobra.Command, args []string) error {
defer nb.Cleanup()

// parse launch ID
launchID, err := network.ParseLaunchID(args[0])
launchID, err := network.ParseID(args[0])
if err != nil {
return err
}
Expand Down
2 changes: 1 addition & 1 deletion starport/cmd/network_chain_join.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ func networkChainJoinHandler(cmd *cobra.Command, args []string) error {
defer nb.Cleanup()

// parse launch ID.
launchID, err := network.ParseLaunchID(args[0])
launchID, err := network.ParseID(args[0])
if err != nil {
return err
}
Expand Down
2 changes: 1 addition & 1 deletion starport/cmd/network_chain_launch.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ func networkChainLaunchHandler(cmd *cobra.Command, args []string) error {
defer nb.Cleanup()

// parse launch ID
launchID, err := network.ParseLaunchID(args[0])
launchID, err := network.ParseID(args[0])
if err != nil {
return err
}
Expand Down
12 changes: 1 addition & 11 deletions starport/cmd/network_chain_list.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,12 @@ import (

"github.com/spf13/cobra"

"github.com/tendermint/starport/starport/pkg/cosmosaccount"
"github.com/tendermint/starport/starport/pkg/entrywriter"
"github.com/tendermint/starport/starport/services/network/networktypes"
)

var LaunchSummaryHeader = []string{"launch ID", "chain ID", "source", "campaign ID"}

// LaunchSummary holds summarized information about a chain launch
type LaunchSummary struct {
LaunchID string
ChainID string
Source string
CampaignID string
}

// NewNetworkChainList returns a new command to list all published chains on Starport Network
func NewNetworkChainList() *cobra.Command {
c := &cobra.Command{
Expand All @@ -30,10 +21,9 @@ func NewNetworkChainList() *cobra.Command {
Args: cobra.NoArgs,
RunE: networkChainListHandler,
}
c.Flags().String(flagFrom, cosmosaccount.DefaultAccount, "Account name to use for sending transactions to SPN")
c.Flags().AddFlagSet(flagNetworkFrom())
c.Flags().AddFlagSet(flagSetKeyringBackend())
c.Flags().AddFlagSet(flagSetHome())

return c
}

Expand Down
2 changes: 1 addition & 1 deletion starport/cmd/network_chain_prepare.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ func networkChainPrepareHandler(cmd *cobra.Command, args []string) error {
defer nb.Cleanup()

// parse launch ID
launchID, err := network.ParseLaunchID(args[0])
launchID, err := network.ParseID(args[0])
if err != nil {
return err
}
Expand Down
2 changes: 1 addition & 1 deletion starport/cmd/network_chain_show.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ func networkChainLaunch(cmd *cobra.Command, args []string) (NetworkBuilder, uint
return nb, 0, err
}
// parse launch ID.
launchID, err := network.ParseLaunchID(args[0])
launchID, err := network.ParseID(args[0])
if err != nil {
return nb, launchID, err
}
Expand Down
2 changes: 1 addition & 1 deletion starport/cmd/network_request_approve.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ func networkRequestApproveHandler(cmd *cobra.Command, args []string) error {
defer nb.Cleanup()

// parse launch ID
launchID, err := network.ParseLaunchID(args[0])
launchID, err := network.ParseID(args[0])
if err != nil {
return err
}
Expand Down
2 changes: 1 addition & 1 deletion starport/cmd/network_request_list.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ func networkRequestListHandler(cmd *cobra.Command, args []string) error {
}

// parse launch ID
launchID, err := network.ParseLaunchID(args[0])
launchID, err := network.ParseID(args[0])
if err != nil {
return err
}
Expand Down
2 changes: 1 addition & 1 deletion starport/cmd/network_request_reject.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ func networkRequestRejectHandler(cmd *cobra.Command, args []string) error {
defer nb.Cleanup()

// parse launch ID
launchID, err := network.ParseLaunchID(args[0])
launchID, err := network.ParseID(args[0])
if err != nil {
return err
}
Expand Down
2 changes: 1 addition & 1 deletion starport/cmd/network_request_show.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ func networkRequestShowHandler(cmd *cobra.Command, args []string) error {
defer nb.Cleanup()

// parse launch ID
launchID, err := network.ParseLaunchID(args[0])
launchID, err := network.ParseID(args[0])
if err != nil {
return err
}
Expand Down
2 changes: 1 addition & 1 deletion starport/cmd/network_request_verify.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ func networkRequestVerifyHandler(cmd *cobra.Command, args []string) error {
defer nb.Cleanup()

// parse launch ID
launchID, err := network.ParseLaunchID(args[0])
launchID, err := network.ParseID(args[0])
if err != nil {
return err
}
Expand Down
3 changes: 2 additions & 1 deletion starport/cmd/relayer_configure.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"github.com/tendermint/starport/starport/pkg/cliquiz"
"github.com/tendermint/starport/starport/pkg/clispinner"
"github.com/tendermint/starport/starport/pkg/cosmosaccount"
"github.com/tendermint/starport/starport/pkg/entrywriter"
"github.com/tendermint/starport/starport/pkg/relayer"
)

Expand Down Expand Up @@ -478,7 +479,7 @@ func initChain(

balance := coins.String()
if balance == "" {
balance = "-"
balance = entrywriter.None
}
fmt.Printf(" |· (balance: %s)\n\n", balance)

Expand Down
4 changes: 4 additions & 0 deletions starport/pkg/entrywriter/entrywriter.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ import (
"github.com/pkg/errors"
)

const (
None = "-"
)

var ErrInvalidFormat = errors.New("invalid entry format")

// MustWrite writes into out the tabulated entries and panic if the entry format is invalid
Expand Down
40 changes: 40 additions & 0 deletions starport/services/network/campaign.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package network

import (
"context"

campaigntypes "github.com/tendermint/spn/x/campaign/types"

"github.com/tendermint/starport/starport/pkg/events"
"github.com/tendermint/starport/starport/services/network/networktypes"
)

// Campaign fetches the campaign from Starport Network
func (n Network) Campaign(ctx context.Context, campaignID uint64) (networktypes.Campaign, error) {
n.ev.Send(events.New(events.StatusOngoing, "Fetching campaign information"))
res, err := campaigntypes.NewQueryClient(n.cosmos.Context).Campaign(ctx, &campaigntypes.QueryGetCampaignRequest{
CampaignID: campaignID,
})
if err != nil {
return networktypes.Campaign{}, err
}
return networktypes.ToCampaign(res.Campaign), nil
}

// Campaigns fetches the campaigns from Starport Network
func (n Network) Campaigns(ctx context.Context) ([]networktypes.Campaign, error) {
var campaigns []networktypes.Campaign

n.ev.Send(events.New(events.StatusOngoing, "Fetching campaigns information"))
res, err := campaigntypes.NewQueryClient(n.cosmos.Context).CampaignAll(ctx, &campaigntypes.QueryAllCampaignRequest{})
if err != nil {
return campaigns, err
}

// Parse fetched campaigns
for _, campaign := range res.Campaign {
campaigns = append(campaigns, networktypes.ToCampaign(campaign))
}

return campaigns, nil
}
Loading

0 comments on commit 5d9959e

Please sign in to comment.