diff --git a/changelog.md b/changelog.md index c6eb124d2f..dd26879628 100644 --- a/changelog.md +++ b/changelog.md @@ -17,6 +17,7 @@ - [#4113](https://github.com/ignite/cli/pull/4113) Generate chain config documentation automatically - [#4131](https://github.com/ignite/cli/pull/4131) Support `bytes` as data type in the `scaffold` commands - [#4300](https://github.com/ignite/cli/pull/4300) Only panics the module in the most top function level +- [#4326](https://github.com/ignite/cli/pull/4326) fAdd `buf.build` version to `ignite version` command ### Changes diff --git a/ignite/pkg/cosmosbuf/buf.go b/ignite/pkg/cosmosbuf/buf.go index 9af7b48007..d7a2a1081f 100644 --- a/ignite/pkg/cosmosbuf/buf.go +++ b/ignite/pkg/cosmosbuf/buf.go @@ -1,15 +1,18 @@ package cosmosbuf import ( + "bytes" "context" "fmt" "path/filepath" + "strings" "github.com/gobwas/glob" "golang.org/x/sync/errgroup" "github.com/ignite/cli/v29/ignite/pkg/cache" "github.com/ignite/cli/v29/ignite/pkg/cmdrunner/exec" + "github.com/ignite/cli/v29/ignite/pkg/cmdrunner/step" "github.com/ignite/cli/v29/ignite/pkg/dircache" "github.com/ignite/cli/v29/ignite/pkg/errors" "github.com/ignite/cli/v29/ignite/pkg/goenv" @@ -124,7 +127,7 @@ func FileByFile() GenOption { // New creates a new Buf based on the installed binary. func New(cacheStorage cache.Storage, goModPath string) (Buf, error) { - path, err := xexec.ResolveAbsPath(filepath.Join(goenv.Bin(), binaryName)) + p, err := path() if err != nil { return Buf{}, err } @@ -136,7 +139,7 @@ func New(cacheStorage cache.Storage, goModPath string) (Buf, error) { } return Buf{ - path: path, + path: p, cache: c, }, nil } @@ -309,3 +312,22 @@ func (b Buf) command( } return command, nil } + +func path() (string, error) { + return xexec.ResolveAbsPath(filepath.Join(goenv.Bin(), binaryName)) +} + +// Version runs the buf Version command. +func Version(ctx context.Context) (string, error) { + p, err := path() + if err != nil { + return "", err + } + + bufOut := &bytes.Buffer{} + if err := exec.Exec(ctx, []string{p, "--version"}, exec.StepOption(step.Stdout(bufOut))); err != nil { + return "", err + } + + return strings.TrimSpace(bufOut.String()), nil +} diff --git a/ignite/version/version.go b/ignite/version/version.go index 3b8fb6b715..efd6eaa509 100644 --- a/ignite/version/version.go +++ b/ignite/version/version.go @@ -18,6 +18,7 @@ import ( chainconfig "github.com/ignite/cli/v29/ignite/config/chain" "github.com/ignite/cli/v29/ignite/pkg/cmdrunner/exec" "github.com/ignite/cli/v29/ignite/pkg/cmdrunner/step" + "github.com/ignite/cli/v29/ignite/pkg/cosmosbuf" "github.com/ignite/cli/v29/ignite/pkg/cosmosver" "github.com/ignite/cli/v29/ignite/pkg/errors" "github.com/ignite/cli/v29/ignite/pkg/gitpod" @@ -40,6 +41,7 @@ type Info struct { CLIVersion string GoVersion string SDKVersion string + BufVersion string BuildDate string SourceHash string ConfigVersion string @@ -150,6 +152,7 @@ func Long(ctx context.Context) (string, error) { write("Ignite CLI source hash", info.SourceHash) write("Ignite CLI config version", info.ConfigVersion) write("Cosmos SDK version", info.SDKVersion) + write("Buf.Build version", info.BufVersion) write("Your OS", info.OS) write("Your arch", info.Arch) @@ -221,9 +224,15 @@ func GetInfo(ctx context.Context) (Info, error) { uname = strings.TrimSpace(unameBuf.String()) } + bufVersion, err := cosmosbuf.Version(ctx) + if err != nil { + return info, err + } + info.Uname = uname info.CLIVersion = resolveDevVersion(ctx) info.BuildDate = date + info.BufVersion = bufVersion info.SourceHash = head info.ConfigVersion = fmt.Sprintf("v%d", chainconfig.LatestVersion) info.SDKVersion = sdkVersion