Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ require (
github.com/cenkalti/backoff/v4 v4.1.2
github.com/charmbracelet/glow v1.4.0
github.com/containerd/containerd v1.5.8 // indirect
github.com/cosmos/cosmos-sdk v0.44.3
github.com/cosmos/cosmos-sdk v0.44.4
github.com/cosmos/go-bip39 v1.0.0
github.com/docker/docker v20.10.7+incompatible
github.com/emicklei/proto v1.9.0
Expand Down Expand Up @@ -47,7 +47,7 @@ require (
github.com/stretchr/testify v1.7.0
github.com/tendermint/flutter v1.0.2
github.com/tendermint/spm v0.1.5
github.com/tendermint/spn v0.1.1-0.20211118142755-379d54f61d67
github.com/tendermint/spn v0.1.1-0.20211129160658-aa02296826a8
github.com/tendermint/tendermint v0.34.14
github.com/tendermint/vue v0.1.55
golang.org/x/mod v0.4.2
Expand Down
18 changes: 10 additions & 8 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -370,17 +370,17 @@ github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSV
github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
github.com/cosmos/cosmos-sdk v0.44.0/go.mod h1:orG0jzFJ2KsDfzLd/X0JSOMzF4Oxc/BQz2GkcYF4gRE=
github.com/cosmos/cosmos-sdk v0.44.3 h1:F71n1jCqPi4F0wXg8AU4AUdUF8llw0x3D3o6aLt/j2A=
github.com/cosmos/cosmos-sdk v0.44.3/go.mod h1:bA3+VenaR/l/vDiYzaiwbWvRPWHMBX2jG0ygiFtiBp0=
github.com/cosmos/cosmos-sdk v0.44.4 h1:5oJpMr0Uz6PmODDklyNmXLnuByMqonNTxi+LAyhqews=
github.com/cosmos/cosmos-sdk v0.44.4/go.mod h1:0QTCOkE8IWu5LZyfnbbjFjxYRIcV4pBOr7+zPpJwl58=
github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y=
github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY=
github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw=
github.com/cosmos/iavl v0.15.0-rc3.0.20201009144442-230e9bdf52cd/go.mod h1:3xOIaNNX19p0QrX0VqWa6voPRoJRGGYtny+DH8NEPvE=
github.com/cosmos/iavl v0.15.0-rc5/go.mod h1:WqoPL9yPTQ85QBMT45OOUzPxG/U/JcJoN7uMjgxke/I=
github.com/cosmos/iavl v0.15.3/go.mod h1:OLjQiAQ4fGD2KDZooyJG9yz+p2ao2IAYSbke8mVvSA4=
github.com/cosmos/iavl v0.16.0/go.mod h1:2A8O/Jz9YwtjqXMO0CjnnbTYEEaovE8jWcwrakH3PoE=
github.com/cosmos/iavl v0.17.1 h1:b/Cl8h1PRMvsu24+TYNlKchIu7W6tmxIBGe6E9u2Ybw=
github.com/cosmos/iavl v0.17.1/go.mod h1:7aisPZK8yCpQdy3PMvKeO+bhq1NwDjUwjzxwwROUxFk=
github.com/cosmos/iavl v0.17.2 h1:BT2u7DUvLLB+RYz9RItn/8n7Bt5xe5rj8QRTkk/PQU0=
github.com/cosmos/iavl v0.17.2/go.mod h1:prJoErZFABYZGDHka1R6Oay4z9PrNeFFiMKHDAMOi4w=
github.com/cosmos/ibc-go v1.2.0/go.mod h1:wGjeNd+T4kpGrt0OC8DTiE/qXLrlmTPNpdoYsBZUjKI=
github.com/cosmos/ledger-cosmos-go v0.11.1 h1:9JIYsGnXP613pb2vPjFeMMjBI5lEDsEaF6oYorTy6J4=
github.com/cosmos/ledger-cosmos-go v0.11.1/go.mod h1:J8//BsAGTo3OC/vDLjMRFLW6q0WAaXvHnVc7ZmE8iUY=
Expand Down Expand Up @@ -1309,8 +1309,8 @@ github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2l
github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME=
github.com/tendermint/spm v0.1.5 h1:/MkM8SOsHBkX1kbo74a2WNmrViLaEem/OzBHI5v6l1c=
github.com/tendermint/spm v0.1.5/go.mod h1:+rHrI1axfSX1R0DY6KA4IbrHPgJ0WVNJKhey71ulXO8=
github.com/tendermint/spn v0.1.1-0.20211118142755-379d54f61d67 h1:+T9+sFcVjVe/rESgjkpS2cROy+6HLwlSj60jikNS8Y8=
github.com/tendermint/spn v0.1.1-0.20211118142755-379d54f61d67/go.mod h1:Z3T6kPy6krX6rwnemnQsTUaOknmldNT20kJN3VMMwPU=
github.com/tendermint/spn v0.1.1-0.20211129160658-aa02296826a8 h1:r2v49c2eGM0+cOSLo6XKbNsfcj6/ZhfZgz1OGndg6Hc=
github.com/tendermint/spn v0.1.1-0.20211129160658-aa02296826a8/go.mod h1:Z3T6kPy6krX6rwnemnQsTUaOknmldNT20kJN3VMMwPU=
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=
github.com/tendermint/tendermint v0.34.0/go.mod h1:Aj3PIipBFSNO21r+Lq3TtzQ+uKESxkbA3yo/INM4QwQ=
Expand Down Expand Up @@ -1443,8 +1443,8 @@ golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPh
golang.org/x/crypto v0.0.0-20201117144127-c1f2f97bffc9/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a h1:kr2P4QFmQr29mSLA43kwrOcgcReGTfbE9N577tCTuBc=
golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8=
golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 h1:HWj/xjIHfjYU5nVXpTM0s39J9CbLn7Cc5a7IC5rwsMQ=
golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
Expand Down Expand Up @@ -1670,6 +1670,7 @@ golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210903071746-97244b99971b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
Expand Down Expand Up @@ -1845,6 +1846,7 @@ google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6D
google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=
google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83 h1:3V2dxSZpz4zozWWUq36vUxXEKnSYitEH2LdsAx+RUmg=
google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o=
Expand Down
14 changes: 4 additions & 10 deletions starport/cmd/cmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ import (
"github.com/tendermint/starport/starport/pkg/goenv"
"github.com/tendermint/starport/starport/pkg/xgenny"
"github.com/tendermint/starport/starport/services/chain"
"github.com/tendermint/starport/starport/services/network"
"github.com/tendermint/starport/starport/services/scaffolder"
)

Expand Down Expand Up @@ -165,15 +164,6 @@ func newChainWithHomeFlags(cmd *cobra.Command, chainOption ...chain.Option) (*ch
return chain.New(absPath, chainOption...)
}

func initOptionWithHomeFlag(cmd *cobra.Command, initOptions ...network.InitOption) []network.InitOption {
// Check if custom home is provided
if home := getHome(cmd); home != "" {
initOptions = append(initOptions, network.InitializationHomePath(home))
}

return initOptions
}

var (
modifyPrefix = color.New(color.FgMagenta).SprintFunc()("modify ")
createPrefix = color.New(color.FgGreen).SprintFunc()("create ")
Expand Down Expand Up @@ -287,3 +277,7 @@ https://docs.starport.network/migration`, sc.Version.String(),
}
return sc, nil
}

func printSection(title string) {
fmt.Printf("------\n%s\n------\n\n", title)
}
104 changes: 63 additions & 41 deletions starport/cmd/network.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package starportcmd

import (
"fmt"
"sync"

"github.com/pkg/errors"
Expand All @@ -12,6 +11,7 @@ import (
"github.com/tendermint/starport/starport/pkg/events"
"github.com/tendermint/starport/starport/pkg/gitpod"
"github.com/tendermint/starport/starport/services/network"
"github.com/tendermint/starport/starport/services/network/networkchain"
)

var (
Expand Down Expand Up @@ -64,39 +64,70 @@ func NewNetwork() *cobra.Command {

var cosmos *cosmosclient.Client

// initializeNetwork initializes event bus, CLIn components such as spinner and returns a new network builder
func initializeNetwork(cmd *cobra.Command) (
nb *network.Builder,
spinner *clispinner.Spinner,
cleanup func(),
err error,
) {
var (
wg sync.WaitGroup
s = clispinner.New()
ev = events.NewBus()
)
wg.Add(1)
go printEvents(&wg, ev, s)

shutdown := func() {
s.Stop()
ev.Shutdown()
wg.Wait()
type NetworkBuilder struct {
AccountRegistry cosmosaccount.Registry
Spinner *clispinner.Spinner

ev events.Bus
wg *sync.WaitGroup
cmd *cobra.Command
cc cosmosclient.Client
}

func newNetworkBuilder(cmd *cobra.Command) (NetworkBuilder, error) {
var err error

n := NetworkBuilder{
Spinner: clispinner.New(),
ev: events.NewBus(),
wg: &sync.WaitGroup{},
cmd: cmd,
}

n.wg.Add(1)
go printEvents(n.wg, n.ev, n.Spinner)

if n.cc, err = getNetworkCosmosClient(cmd); err != nil {
n.Cleanup()
return NetworkBuilder{}, err
}

n.AccountRegistry = n.cc.AccountRegistry

return n, nil
}

func (n NetworkBuilder) Chain(source networkchain.SourceOption, options ...networkchain.Option) (*networkchain.Chain, error) {
options = append(options, networkchain.CollectEvents(n.ev))

if home := getHome(n.cmd); home != "" {
options = append(options, networkchain.WithHome(home))
}

nb, err = newNetwork(cmd, network.CollectEvents(ev))
return networkchain.New(n.cmd.Context(), n.AccountRegistry, source, options...)
}

func (n NetworkBuilder) Network(options ...network.Option) (network.Network, error) {
options = append(options, network.CollectEvents(n.ev))

account, err := cosmos.AccountRegistry.GetByName(getFrom(n.cmd))
if err != nil {
shutdown()
return network.Network{}, errors.Wrap(err, "make sure that this account exists, use 'starport account -h' to manage accounts")
}
return nb, s, shutdown, err

return network.New(*cosmos, account, options...)
}

func (n NetworkBuilder) Cleanup() {
n.Spinner.Stop()
n.ev.Shutdown()
n.wg.Wait()
}

// newNetwork returns a new network builder initialized with command flag
func newNetwork(cmd *cobra.Command, options ...network.Option) (*network.Builder, error) {
func getNetworkCosmosClient(cmd *cobra.Command) (cosmosclient.Client, error) {
// check preconfigured networks
if nightly && local {
return nil, errors.New("local and nightly networks can't be specified in the same command")
return cosmosclient.Client{}, errors.New("local and nightly networks can't be specified in the same command")
}
if local {
spnNodeAddress = spnNodeAddressLocal
Expand All @@ -107,10 +138,10 @@ func newNetwork(cmd *cobra.Command, options ...network.Option) (*network.Builder
}

cosmosOptions := []cosmosclient.Option{
cosmosclient.WithHome(getHome(cmd)),
cosmosclient.WithHome(cosmosaccount.KeyringHome),
cosmosclient.WithNodeAddress(spnNodeAddress),
cosmosclient.WithAddressPrefix(network.SPNAddressPrefix),
cosmosclient.WithUseFaucet(spnFaucetAddress, "", 0),
cosmosclient.WithAddressPrefix(networkchain.SPN),
cosmosclient.WithUseFaucet(spnFaucetAddress, "token", 5),
cosmosclient.WithKeyringServiceName(cosmosaccount.KeyringServiceName),
}

Expand All @@ -129,23 +160,14 @@ func newNetwork(cmd *cobra.Command, options ...network.Option) (*network.Builder
if cosmos == nil {
client, err := cosmosclient.New(cmd.Context(), cosmosOptions...)
if err != nil {
return nil, err
return cosmosclient.Client{}, err
}
cosmos = &client
}

if err := cosmos.AccountRegistry.EnsureDefaultAccount(); err != nil {
return nil, err
return cosmosclient.Client{}, err
}

account, err := cosmos.AccountRegistry.GetByName(getFrom(cmd))
if err != nil {
return nil, errors.Wrap(err, "make sure that this account exists, use 'starport account -h' to manage accounts")
}

return network.New(*cosmos, account, options...)
}

func printSection(title string) {
fmt.Printf("---------------------------------------------\n%s\n---------------------------------------------\n\n", title)
return *cosmos, nil
}
42 changes: 25 additions & 17 deletions starport/cmd/network_chain_init.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import (
"github.com/tendermint/starport/starport/pkg/clispinner"
"github.com/tendermint/starport/starport/pkg/cosmosaccount"
"github.com/tendermint/starport/starport/services/chain"
"github.com/tendermint/starport/starport/services/network"
"github.com/tendermint/starport/starport/services/network/networkchain"
)

const (
Expand All @@ -37,11 +37,11 @@ func NewNetworkChainInit() *cobra.Command {
}

func networkChainInitHandler(cmd *cobra.Command, args []string) error {
nb, s, shutdown, err := initializeNetwork(cmd)
nb, err := newNetworkBuilder(cmd)
if err != nil {
return err
}
defer shutdown()
defer nb.Cleanup()

// parse launch ID
launchID, err := strconv.ParseUint(args[0], 10, 64)
Expand All @@ -52,52 +52,60 @@ func networkChainInitHandler(cmd *cobra.Command, args []string) error {
return errors.New("launch ID must be greater than 0")
}

// check if the provided account for the validator exists
// check if the provided account for the validator exists.
validatorAccount, _ := cmd.Flags().GetString(flagValidatorAccount)
_, err = nb.AccountRegistry().GetByName(validatorAccount)
if err != nil {
if _, err = nb.AccountRegistry.GetByName(validatorAccount); err != nil {
return err
}

// if a chain has already been initialized with this launch ID, we ask for confirmation before erasing the directory
chainHome, exist, err := network.IsChainHomeExist(launchID)
// if a chain has already been initialized with this launch ID, we ask for confirmation
// before erasing the directory.
chainHome, exist, err := networkchain.IsChainHomeExist(launchID)
if err != nil {
return err
}

if !getYes(cmd) && exist {
prompt := promptui.Prompt{
Label: fmt.Sprintf("The chain has already been initialized under: %s. Would you like to overwrite the home directory",
chainHome,
),
IsConfirm: true,
}
s.Stop()
nb.Spinner.Stop()
if _, err := prompt.Run(); err != nil {
fmt.Println("said no")
return nil
}
s.Start()
nb.Spinner.Start()
}

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

launchInfo, err := n.LaunchInfo(cmd.Context(), launchID)
if err != nil {
return err
}

// initialize the blockchain from the launch ID
initOptions := initOptionWithHomeFlag(cmd, network.MustNotInitializedBefore())
sourceOption := network.SourceLaunchID(launchID)
blockchain, err := nb.Blockchain(cmd.Context(), sourceOption, initOptions...)
c, err := nb.Chain(networkchain.SourceLaunch(launchInfo))
if err != nil {
return err
}

if err := blockchain.Init(cmd.Context()); err != nil {
if err := c.Init(cmd.Context()); err != nil {
return err
}

// ask validator information
// ask validator information.
v, err := askValidatorInfo(validatorAccount)
if err != nil {
return err
}

gentxPath, err := blockchain.InitAccount(cmd.Context(), v, validatorAccount)
gentxPath, err := c.InitAccount(cmd.Context(), v, validatorAccount)
if err != nil {
return err
}
Expand Down
Loading