diff --git a/Makefile b/Makefile index fb8eb83..949502d 100644 --- a/Makefile +++ b/Makefile @@ -1,17 +1,19 @@ CLI_BIN := ./bin/doggo.bin API_BIN := ./bin/doggo-api.bin -HASH := $(shell git rev-parse --short HEAD) -BUILD_DATE := $(shell date '+%Y-%m-%d %H:%M:%S') -VERSION := ${HASH} +LAST_COMMIT := $(shell git rev-parse --short HEAD) +LAST_COMMIT_DATE := $(shell git show -s --format=%cI ${LAST_COMMIT}) +VERSION := $(shell git describe --tags) +BUILDSTR := ${VERSION} | Commit ${LAST_COMMIT_DATE}-${LAST_COMMIT} | Build $(shell date --iso-8601=seconds) + .PHONY: build-cli build-cli: - go build -o ${CLI_BIN} -ldflags="-X 'main.buildVersion=${VERSION}' -X 'main.buildDate=${BUILD_DATE}'" ./cmd/doggo/ + go build -o ${CLI_BIN} -ldflags="-X 'main.buildString=${BUILDSTR}'" ./cmd/doggo/ .PHONY: build-api build-api: - go build -o ${API_BIN} -ldflags="-X 'main.buildVersion=${VERSION}' -X 'main.buildDate=${BUILD_DATE}'" ./cmd/api/ + go build -o ${API_BIN} -ldflags="-X 'main.buildString=${BUILDSTR}'" ./cmd/api/ .PHONY: build build: build-api build-cli diff --git a/cmd/api/api.go b/cmd/api/api.go index fd6b7da..d3e612c 100644 --- a/cmd/api/api.go +++ b/cmd/api/api.go @@ -16,11 +16,11 @@ import ( ) var ( + // Version of the build. This is injected at build-time. + buildString = "unknown" + logger = utils.InitLogger() ko = koanf.New(".") - // Version and date of the build. This is injected at build-time. - buildVersion = "unknown" - buildDate = "unknown" //go:embed assets/* assetsDir embed.FS //go:embed index.html @@ -31,7 +31,7 @@ func main() { initConfig() // Initialize app. - app := app.New(logger, buildVersion) + app := app.New(logger, buildString) // Register router instance. r := chi.NewRouter() @@ -69,6 +69,7 @@ func main() { logger.WithFields(logf.Fields{ "address": srv.Addr, + "version": buildString, }).Info("starting server") if err := srv.ListenAndServe(); err != nil { diff --git a/cmd/api/config.go b/cmd/api/config.go index f567089..beb62c5 100644 --- a/cmd/api/config.go +++ b/cmd/api/config.go @@ -34,7 +34,7 @@ func initConfig() { f.Parse(os.Args[1:]) // Display version. if ok, _ := f.GetBool("version"); ok { - fmt.Println(buildVersion, buildDate) + fmt.Println(buildString) os.Exit(0) } diff --git a/cmd/doggo/cli.go b/cmd/doggo/cli.go index 5643b05..010e363 100644 --- a/cmd/doggo/cli.go +++ b/cmd/doggo/cli.go @@ -15,16 +15,15 @@ import ( ) var ( - // Version and date of the build. This is injected at build-time. - buildVersion = "unknown" - buildDate = "unknown" - logger = utils.InitLogger() - k = koanf.New(".") + // Version of the build. This is injected at build-time. + buildString = "unknown" + logger = utils.InitLogger() + k = koanf.New(".") ) func main() { // Initialize app. - app := app.New(logger, buildVersion) + app := app.New(logger, buildString) // Configure Flags. f := flag.NewFlagSet("config", flag.ContinueOnError) @@ -70,7 +69,7 @@ func main() { // If version flag is set, output version and quit. if k.Bool("version") { - fmt.Printf("%s - %s\n", buildVersion, buildDate) + fmt.Println(buildString) os.Exit(0) } diff --git a/cmd/doggo/help.go b/cmd/doggo/help.go index c714b7a..a4e719c 100644 --- a/cmd/doggo/help.go +++ b/cmd/doggo/help.go @@ -16,7 +16,7 @@ var appHelpTextTemplate = `{{ "NAME" | color "" "heading" }}: {{ .Name | color "green" "bold" }} [--] {{ "[query options]" | color "yellow" "" }} {{ "[arguments...]" | color "cyan" "" }} {{ "VERSION" | color "" "heading" }}: - {{.Version | color "red" "" }} - {{.Date | color "red" ""}} + {{.Version | color "red" "" }} {{ "EXAMPLES" | color "" "heading" }}: {{ .Name | color "green" "bold" }} {{ "mrkaran.dev" | color "cyan" "" }} Query a domain using defaults. @@ -69,8 +69,7 @@ func renderCustomHelp() { helpTmplVars := map[string]string{ "Name": "doggo", "Description": "DNS Client for Humans", - "Version": buildVersion, - "Date": buildDate, + "Version": buildString, } tmpl, err := template.New("test").Funcs(template.FuncMap{ "color": func(clr string, format string, str string) string {