diff --git a/cmd/dagger/cmd/root.go b/cmd/dagger/cmd/root.go index 88858f3f..32dea121 100644 --- a/cmd/dagger/cmd/root.go +++ b/cmd/dagger/cmd/root.go @@ -39,6 +39,7 @@ func init() { plan.Cmd, input.Cmd, output.Cmd, + versionCmd, ) if err := viper.BindPFlags(rootCmd.PersistentFlags()); err != nil { diff --git a/cmd/dagger/cmd/version.go b/cmd/dagger/cmd/version.go new file mode 100644 index 00000000..5d85b9e4 --- /dev/null +++ b/cmd/dagger/cmd/version.go @@ -0,0 +1,35 @@ +package cmd + +import ( + "fmt" + "runtime" + "runtime/debug" + + "github.com/spf13/cobra" +) + +const ( + defaultVersion = "devel" +) + +// set by goreleaser or other builder using +// -ldflags='-X dagger.io/go/cmd/dagger/cmd.version=' +var ( + version = defaultVersion +) + +var versionCmd = &cobra.Command{ + Use: "version", + Short: "Print dagger version", + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + if bi, ok := debug.ReadBuildInfo(); ok && version == defaultVersion { + // No specific version provided via version + version = bi.Main.Version + } + fmt.Printf("dagger version %v %s/%s\n", + version, + runtime.GOOS, runtime.GOARCH, + ) + }, +}