diff --git a/Makefile b/Makefile index 4ebc288..a39354e 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,14 @@ BIN_DIR=_output/cmd/bin +REPO_PATH="github.com/gostor/gotgt" +REL_OSARCH="linux/amd64" +GitSHA=`git rev-parse HEAD` +Date=`date "+%Y-%m-%d %H:%M:%S"` +RELEASE_VERSION=$(shell git describe --tags --always --dirty) +IMG_BUILDER=docker +LD_FLAGS=" \ + -X '${REPO_PATH}/pkg/version.GitSHA=${GitSHA}' \ + -X '${REPO_PATH}/pkg/version.Built=${Date}' \ + -X '${REPO_PATH}/pkg/version.Version=${RELEASE_VERSION}'" all: init build @@ -6,10 +16,10 @@ deps: go mod download build: init - go build -o ${BIN_DIR}/gotgt gotgt.go + go build -ldflags ${LD_FLAGS} -o ${BIN_DIR}/gotgt gotgt.go build-nocgo: init - CGO_ENABLED=0 go build -o ${BIN_DIR}/gotgt gotgt.go + CGO_ENABLED=0 go build -ldflags ${LD_FLAGS} -o ${BIN_DIR}/gotgt gotgt.go verify: hack/verify-gofmt.sh diff --git a/cmd/version.go b/cmd/version.go index 52b9b79..f488d08 100644 --- a/cmd/version.go +++ b/cmd/version.go @@ -1,11 +1,10 @@ package cmd import ( - "fmt" + "github.com/spf13/cobra" "github.com/gostor/gotgt/pkg/api/client" "github.com/gostor/gotgt/pkg/version" - "github.com/spf13/cobra" ) func newVersionCommand(cli *client.Client) *cobra.Command { @@ -14,7 +13,7 @@ func newVersionCommand(cli *client.Client) *cobra.Command { Short: "Print the version number of gotgt", Long: `All software has versions. This is Gotgt 's`, Run: func(cmd *cobra.Command, args []string) { - fmt.Printf("Gotgt %s -- HEAD\n", version.Version) + version.PrintVersionAndExit() }, } return cmd diff --git a/pkg/version/version.go b/pkg/version/version.go index 82db0ec..2f5100c 100644 --- a/pkg/version/version.go +++ b/pkg/version/version.go @@ -17,8 +17,41 @@ limitations under the License. // Package version provides the Version information. package version +import ( + "fmt" + "os" + "runtime" +) + const ( - Version = "0.1" + // Version shows the version of gotgt. + Version = "Not provided." // SCSI version string MUST be shorter than 4 characters SCSIVersion = "0.1" + // GitSHA shoows the git commit id of volcano. + GitSHA = "Not provided." + // Built shows the built time of the binary. + Built = "Not provided." + + apiVersion = "v1alpha1" ) + +// PrintVersionAndExit prints versions from the array returned by Info() and exit +func PrintVersionAndExit() { + for _, i := range Info(apiVersion) { + fmt.Printf("%v\n", i) + } + os.Exit(0) +} + +// Info returns an array of various service versions +func Info(apiVersion string) []string { + return []string{ + fmt.Sprintf("API Version: %s", apiVersion), + fmt.Sprintf("Version: %s", Version), + fmt.Sprintf("Git SHA: %s", GitSHA), + fmt.Sprintf("Built At: %s", Built), + fmt.Sprintf("Go Version: %s", runtime.Version()), + fmt.Sprintf("Go OS/Arch: %s/%s", runtime.GOOS, runtime.GOARCH), + } +}