Some checks failed
Docs Deploy / build_and_deploy (push) Has been cancelled
Generate Docs / cli (push) Has been cancelled
Generate Config Doc / cli (push) Has been cancelled
Go formatting / go-formatting (push) Has been cancelled
Check links / markdown-link-check (push) Has been cancelled
Integration / pre-test (push) Has been cancelled
Integration / test on (push) Has been cancelled
Integration / status (push) Has been cancelled
Lint / Lint Go code (push) Has been cancelled
Test / test (ubuntu-latest) (push) Has been cancelled
56 lines
1.8 KiB
Go
56 lines
1.8 KiB
Go
package cosmosver
|
|
|
|
import (
|
|
"regexp"
|
|
|
|
"git.cw.tr/mukan-network/mukan-ignite/ignite/pkg/gomodule"
|
|
)
|
|
|
|
var (
|
|
// CosmosSDKRepoName defines the name of the Cosmos SDK repository.
|
|
// THE MUKAN PATCH: also matches mukan-sdk forks.
|
|
CosmosSDKRepoName = "cosmos-sdk|mukan-sdk"
|
|
// CosmosModulePath defines Cosmos SDK import path.
|
|
// THE MUKAN PATCH: accepts both the original Cosmos path and the Mukan sovereign path.
|
|
CosmosModulePath = "github.com/cosmos/cosmos-sdk"
|
|
// MukanSDKModulePath defines the Mukan sovereign SDK import path.
|
|
MukanSDKModulePath = "git.cw.tr/mukan-network/mukan-sdk"
|
|
// CosmosSDKModulePathPattern defines a regexp pattern for Cosmos SDK import path.
|
|
// THE MUKAN PATCH: matches both github.com/cosmos/cosmos-sdk and git.cw.tr/mukan-network/mukan-sdk.
|
|
CosmosSDKModulePathPattern = regexp.MustCompile(CosmosSDKRepoName + "$")
|
|
)
|
|
|
|
// Detect detects major version of Cosmos SDK.
|
|
// If the Cosmos SDK is replaced with a fork, it returns the version of the fork.
|
|
// If the Cosmos SDK is replaced with a local fork, it returns its non resolved version.
|
|
func Detect(appPath string) (version Version, err error) {
|
|
parsed, err := gomodule.ParseAt(appPath)
|
|
if err != nil {
|
|
return version, err
|
|
}
|
|
|
|
versions, err := gomodule.ResolveDependencies(parsed, false)
|
|
if err != nil {
|
|
return version, err
|
|
}
|
|
|
|
for _, v := range versions {
|
|
if CosmosSDKModulePathPattern.MatchString(v.Path) {
|
|
// an empty version means that Cosmos SDK is replaced with a local fork
|
|
// we fallback to use the non resolved go import of the Cosmos SDK
|
|
if v.Version == "" {
|
|
for _, r := range parsed.Require {
|
|
if r.Mod.Path == CosmosModulePath {
|
|
v.Version = r.Mod.Version
|
|
}
|
|
}
|
|
}
|
|
|
|
if version, err = Parse(v.Version); err != nil {
|
|
return version, err
|
|
}
|
|
}
|
|
}
|
|
|
|
return
|
|
}
|