From 9eb4caf095bc9ef892f4e8e710d1aea7b7633e31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0lker=20G=C3=B6ktu=C4=9F=20=C3=96ZT=C3=9CRK?= Date: Mon, 21 Dec 2020 11:44:02 +0300 Subject: [PATCH 1/4] feat(network): disable create command for Launchpad apps fixes #584. --- starport/services/chain/chain.go | 6 ++++++ starport/services/networkbuilder/blockchain.go | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/starport/services/chain/chain.go b/starport/services/chain/chain.go index 3449c5cf36..43a04ef008 100644 --- a/starport/services/chain/chain.go +++ b/starport/services/chain/chain.go @@ -10,6 +10,7 @@ import ( "github.com/go-git/go-git/v5" "github.com/gookit/color" + "github.com/tendermint/starport/starport/pkg/cosmosver" "github.com/tendermint/starport/starport/services/chain/conf" secretconf "github.com/tendermint/starport/starport/services/chain/conf/secret" ) @@ -104,6 +105,11 @@ func (c *Chain) appVersion() (v version, err error) { return v, nil } +// SDKVersion returns the version of SDK used to build the blockchain. +func (c *Chain) SDKVersion() cosmosver.MajorVersion { + return c.plugin.Version() +} + // RPCPublicAddress points to the public address of Tendermint RPC, this is shared by // other chains for relayer related actions. func (c *Chain) RPCPublicAddress() (string, error) { diff --git a/starport/services/networkbuilder/blockchain.go b/starport/services/networkbuilder/blockchain.go index 3fcd808dfa..50b5cc79f0 100644 --- a/starport/services/networkbuilder/blockchain.go +++ b/starport/services/networkbuilder/blockchain.go @@ -5,8 +5,10 @@ import ( "fmt" "io/ioutil" "os" + "strings" "github.com/cosmos/cosmos-sdk/types" + "github.com/tendermint/starport/starport/pkg/cosmosver" "github.com/tendermint/starport/starport/pkg/events" "github.com/tendermint/starport/starport/pkg/gomodulepath" "github.com/tendermint/starport/starport/pkg/jsondoc" @@ -57,6 +59,10 @@ func (b *Blockchain) init(ctx context.Context, chainID string, mustNotInitialize return err } + if v := c.SDKVersion(); v != cosmosver.Stargate { + return fmt.Errorf("%q apps aren't supported", strings.Title(string(v))) + } + if mustNotInitializedBefore { if _, err := os.Stat(c.Home()); !os.IsNotExist(err) { return &DataDirExistsError{chainID, c.Home()} From 1d847671ec3f49d9de4918e85125d1f96ecd9a55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0lker=20G=C3=B6ktu=C4=9F=20=C3=96ZT=C3=9CRK?= Date: Mon, 21 Dec 2020 12:59:19 +0300 Subject: [PATCH 2/4] improve sdk version detection logic instead of comparing by == we now compare by >= which makes it possible to determine versions of even newer sdk releases. --- go.mod | 4 ++-- go.sum | 6 ++++-- integration/env_test.go | 2 +- starport/pkg/cosmosver/cosmosver.go | 9 +++++---- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index e0e94904fa..8e77f86187 100644 --- a/go.mod +++ b/go.mod @@ -46,10 +46,10 @@ require ( github.com/tendermint/spn v0.0.0-20201215081711-b9ec9286ed83 github.com/tendermint/tendermint v0.34.0-rc6 golang.org/x/crypto v0.0.0-20201217014255-9d1352758620 // indirect - golang.org/x/mod v0.3.0 + golang.org/x/mod v0.4.0 golang.org/x/net v0.0.0-20201021035429-f5854403a974 // indirect golang.org/x/sync v0.0.0-20201207232520-09787c993a3a - golang.org/x/sys v0.0.0-20201218084310-7d0127a74742 // indirect + golang.org/x/sys v0.0.0-20201221093633-bc327ba9c2f0 // indirect golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf // indirect google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154 // indirect google.golang.org/grpc v1.33.0 diff --git a/go.sum b/go.sum index 4c3cc2159d..5488c8fe89 100644 --- a/go.sum +++ b/go.sum @@ -830,6 +830,8 @@ golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0 h1:8pl+sMODzuvGJkmj2W4kZihvVb5mKm8pB/X44PIQHv8= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -926,8 +928,8 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201018230417-eeed37f84f13/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201218084310-7d0127a74742 h1:+CBz4km/0KPU3RGTwARGh/noP3bEwtHcq+0YcBQM2JQ= -golang.org/x/sys v0.0.0-20201218084310-7d0127a74742/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201221093633-bc327ba9c2f0 h1:n+DPcgTwkgWzIFpLmoimYR2K2b0Ga5+Os4kayIN0vGo= +golang.org/x/sys v0.0.0-20201221093633-bc327ba9c2f0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf h1:MZ2shdL+ZM/XzY3ZGOnh4Nlpnxz5GSOhOmtHo3iPU6M= golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= diff --git a/integration/env_test.go b/integration/env_test.go index 6dbeace6ec..46ef5386b5 100644 --- a/integration/env_test.go +++ b/integration/env_test.go @@ -152,7 +152,7 @@ const ( // Scaffold scaffolds an app to a unique appPath and returns it. func (e env) Scaffold(appName, sdkVersion string) (appPath string) { root := e.TmpDir() - e.Exec("scaffold a launchpad app", + e.Exec("scaffold an app", step.NewSteps(step.New( step.Exec( "starport", diff --git a/starport/pkg/cosmosver/cosmosver.go b/starport/pkg/cosmosver/cosmosver.go index b2bcb79cb8..064ab36c21 100644 --- a/starport/pkg/cosmosver/cosmosver.go +++ b/starport/pkg/cosmosver/cosmosver.go @@ -5,6 +5,7 @@ import ( "strings" "github.com/tendermint/starport/starport/pkg/gomodule" + "golang.org/x/mod/semver" ) type MajorVersion string @@ -21,8 +22,8 @@ const ( var MajorVersions = majorVersions{Launchpad, Stargate} const ( - tendermintPath = "github.com/tendermint/tendermint" - cosmosStargateTendermintMajor = "v0.34.0" + referenceModulePath = "github.com/cosmos/cosmos-sdk" + referenceModuleLatestTag = "v0.40.0" ) // Detect dedects major version of Cosmos. @@ -33,8 +34,8 @@ func Detect(appPath string) (MajorVersion, error) { } for _, r := range parsed.Require { v := r.Mod - if v.Path == tendermintPath { - if strings.HasPrefix(v.Version, cosmosStargateTendermintMajor) { + if v.Path == referenceModulePath { + if semver.Compare(referenceModuleLatestTag, v.Version) >= 0 { return Stargate, nil } break From 40a6bda5297aa39e455374a2ad54e7378bac0997 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0lker=20G=C3=B6ktu=C4=9F=20=C3=96ZT=C3=9CRK?= Date: Mon, 21 Dec 2020 13:37:27 +0300 Subject: [PATCH 3/4] fix lowered sdk version to v0.39.99 to be able to support rc versions of v0.40.0. --- starport/pkg/cosmosver/cosmosver.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/starport/pkg/cosmosver/cosmosver.go b/starport/pkg/cosmosver/cosmosver.go index 064ab36c21..6b4b724e2a 100644 --- a/starport/pkg/cosmosver/cosmosver.go +++ b/starport/pkg/cosmosver/cosmosver.go @@ -23,7 +23,7 @@ var MajorVersions = majorVersions{Launchpad, Stargate} const ( referenceModulePath = "github.com/cosmos/cosmos-sdk" - referenceModuleLatestTag = "v0.40.0" + referenceModuleLatestTag = "v0.39.99" ) // Detect dedects major version of Cosmos. @@ -35,7 +35,7 @@ func Detect(appPath string) (MajorVersion, error) { for _, r := range parsed.Require { v := r.Mod if v.Path == referenceModulePath { - if semver.Compare(referenceModuleLatestTag, v.Version) >= 0 { + if semver.Compare(v.Version, referenceModuleLatestTag) >= 0 { return Stargate, nil } break From f35bae45598be578936175cef6e48a9441048e38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0lker=20G=C3=B6ktu=C4=9F=20=C3=96ZT=C3=9CRK?= Date: Mon, 21 Dec 2020 14:06:18 +0300 Subject: [PATCH 4/4] docs --- starport/services/networkbuilder/blockchain.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/starport/services/networkbuilder/blockchain.go b/starport/services/networkbuilder/blockchain.go index 50b5cc79f0..ba8982b24b 100644 --- a/starport/services/networkbuilder/blockchain.go +++ b/starport/services/networkbuilder/blockchain.go @@ -2,10 +2,10 @@ package networkbuilder import ( "context" + "errors" "fmt" "io/ioutil" "os" - "strings" "github.com/cosmos/cosmos-sdk/types" "github.com/tendermint/starport/starport/pkg/cosmosver" @@ -60,7 +60,7 @@ func (b *Blockchain) init(ctx context.Context, chainID string, mustNotInitialize } if v := c.SDKVersion(); v != cosmosver.Stargate { - return fmt.Errorf("%q apps aren't supported", strings.Title(string(v))) + return errors.New("starport doesn't support Cosmos SDK Launchpad blockchains") } if mustNotInitializedBefore {