diff --git a/Makefile b/Makefile index fb0fe542..53efc9f1 100644 --- a/Makefile +++ b/Makefile @@ -5,6 +5,12 @@ RELEASE ?= 1 SRC ?= main +VERSION_FULL ?= $(shell test -e .git && git describe --tags --long --first-parent) +ifeq ($(VERSION_FULL),) +VERSION_FULL := $(VERSION) +endif + + # auto installed tooling TOOLS_DIR := .tools TOOLS_BIN := $(TOOLS_DIR)/bin @@ -116,7 +122,7 @@ debfiles: debian cp wwclient $(DESTDIR)/var/warewulf/overlays/system/debian/warewulf/bin/ wwctl: - cd cmd/wwctl; GOOS=linux go build -mod vendor -tags "$(WW_BUILD_GO_BUILD_TAGS)" -o ../../wwctl + cd cmd/wwctl; GOOS=linux go build -ldflags="-X 'github.com/hpcng/warewulf/internal/pkg/version.Version=$(VERSION_FULL)'" -mod vendor -tags "$(WW_BUILD_GO_BUILD_TAGS)" -o ../../wwctl wwclient: cd cmd/wwclient; CGO_ENABLED=0 GOOS=linux go build -mod vendor -a -ldflags '-extldflags -static' -o ../../wwclient diff --git a/internal/app/wwctl/root.go b/internal/app/wwctl/root.go index 10437f80..059b38db 100644 --- a/internal/app/wwctl/root.go +++ b/internal/app/wwctl/root.go @@ -9,6 +9,7 @@ import ( "github.com/hpcng/warewulf/internal/app/wwctl/power" "github.com/hpcng/warewulf/internal/app/wwctl/profile" "github.com/hpcng/warewulf/internal/app/wwctl/server" + "github.com/hpcng/warewulf/internal/app/wwctl/version" "github.com/hpcng/warewulf/internal/pkg/wwlog" "github.com/hpcng/warewulf/internal/pkg/help" "github.com/spf13/cobra" @@ -46,6 +47,7 @@ func init() { rootCmd.AddCommand(profile.GetCommand()) rootCmd.AddCommand(configure.GetCommand()) rootCmd.AddCommand(server.GetCommand()) + rootCmd.AddCommand(version.GetCommand()) } diff --git a/internal/app/wwctl/version/main.go b/internal/app/wwctl/version/main.go new file mode 100644 index 00000000..08e48d09 --- /dev/null +++ b/internal/app/wwctl/version/main.go @@ -0,0 +1,15 @@ +package version + +import ( + "fmt" + + "github.com/hpcng/warewulf/internal/pkg/version" + "github.com/spf13/cobra" +) + +func CobraRunE(cmd *cobra.Command, args []string) error { + + fmt.Println("Version:\t", version.GetVersion()) + + return nil +} diff --git a/internal/app/wwctl/version/root.go b/internal/app/wwctl/version/root.go new file mode 100644 index 00000000..766d3b8f --- /dev/null +++ b/internal/app/wwctl/version/root.go @@ -0,0 +1,22 @@ +package version + +import "github.com/spf13/cobra" + +var ( + baseCmd = &cobra.Command{ + Use: "version", + Short: "Version information", + Long: "This command will print the Warewulf version.", + RunE: CobraRunE, + Args: cobra.ExactArgs(0), + Aliases: []string{"vers"}, + } +) + +func init() { +} + +// GetRootCommand returns the root cobra.Command for the application. +func GetCommand() *cobra.Command { + return baseCmd +} diff --git a/internal/pkg/version/version.go b/internal/pkg/version/version.go new file mode 100644 index 00000000..0e8e1a5a --- /dev/null +++ b/internal/pkg/version/version.go @@ -0,0 +1,7 @@ +package version + +var Version string = "development" + +func GetVersion() string { + return Version +} diff --git a/internal/pkg/warewulfd/daemon.go b/internal/pkg/warewulfd/daemon.go index 042808d0..acb04ac8 100644 --- a/internal/pkg/warewulfd/daemon.go +++ b/internal/pkg/warewulfd/daemon.go @@ -9,6 +9,7 @@ import ( "syscall" "github.com/hpcng/warewulf/internal/pkg/util" + "github.com/hpcng/warewulf/internal/pkg/version" "github.com/pkg/errors" ) @@ -53,7 +54,7 @@ func DaemonStart() error { fmt.Fprintf(p, "%d", pid) - fmt.Printf("Started Warewulf server at PID: %d\n", pid) + fmt.Printf("Started Warewulf (%s) server at PID: %d\n", version.GetVersion(), pid) }