diff --git a/Makefile b/Makefile index c2f0815..e56ab75 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,10 @@ CC_BINARIES := $(shell bash -c "echo -n $(APP_NAME)-{linux,freebsd,openbsd}-{38 GOLANGCI_LINT_VERSION := v1.21.0 -COMMON_BUILD_FLAGS := -ldflags="-s -w" +VERSION_GO := $(shell go version) +VERSION_DATE := $(shell date -Ru) +VERSION_TAG := $(shell git describe --tags --always) +COMMON_BUILD_FLAGS := -ldflags="-s -w -X 'main.version=$(VERSION_TAG) ($(VERSION_GO)) [$(VERSION_DATE)]'" MOD_ON := env GO111MODULE=on MOD_OFF := env GO111MODULE=auto diff --git a/main.go b/main.go index 1a774e9..c8ffc1b 100644 --- a/main.go +++ b/main.go @@ -14,6 +14,8 @@ import ( "github.com/9seconds/mtg/utils" ) +var version = "dev" // has to be set by ldflags + var ( app = kingpin.New("mtg", "Simple MTPROTO proxy.") @@ -155,24 +157,23 @@ func main() { } func getVersion() string { - if info, ok := debug.ReadBuildInfo(); ok { - builder := strings.Builder{} - version := info.Main.Version - - if version == "(devel)" { - version = "dev" - } - - builder.WriteString(version) - - if info.Main.Sum != "" { - builder.WriteString(" (checksum: ") - builder.WriteString(info.Main.Sum) - builder.WriteRune(')') - } - - return builder.String() + if version != "dev" { + return version } - return "dev" + info, ok := debug.ReadBuildInfo() + if !ok { + return version + } + + builder := strings.Builder{} + builder.WriteString(info.Main.Version) + + if info.Main.Sum != "" { + builder.WriteString(" (checksum: ") + builder.WriteString(info.Main.Sum) + builder.WriteRune(')') + } + + return builder.String() }