diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..c081f70 --- /dev/null +++ b/Makefile @@ -0,0 +1,21 @@ +VERSION ?= $(shell git describe --tags 2>/dev/null || echo "dev") +COMMIT ?= $(shell git rev-parse --short HEAD) +BUILD_TIME ?= $(shell date -u +%Y-%m-%dT%H:%M:%SZ) +GO_VERSION ?= $(shell go version | awk '{print $$3}') + +.PHONY: build +build: + go build -ldflags="\ + -X 'git.kundeng.us/phoenix/clean_file/version.Version=$(VERSION)' \ + -X 'git.kundeng.us/phoenix/clean_file/version.BuildTime=$(BUILD_TIME)' \ + -X 'git.kundeng.us/phoenix/clean_file/version.Commit=$(COMMIT)' \ + -X 'git.kundeng.us/phoenix/clean_file/version.GoVersion=$(GO_VERSION)'" \ + -o clean_file main.go + +.PHONY: install +install: + go install -ldflags="\ + -X 'git.kundeng.us/phoenix/clean_file/version.Version=$(VERSION)' \ + -X 'git.kundeng.us/phoenix/clean_file/version.BuildTime=$(BUILD_TIME)' \ + -X 'git.kundeng.us/phoenix/clean_file/version.Commit=$(COMMIT)' \ + -X 'git.kundeng.us/phoenix/clean_file/version.GoVersion=$(GO_VERSION)'" diff --git a/README.md b/README.md index 94a454e..7d7fbfe 100644 --- a/README.md +++ b/README.md @@ -2,12 +2,7 @@ CLI software that processes a text file containing US phone numbers and sanitizes the numbers. The result is contained in a json file. ## Building -``` -go build -``` - -To include version information ``` -go build -ldflags "-X main.version=3.0.101 -X main.commit=$(git rev-parse HEAD) -X main.date=$(date +%Y-%m-%dT%H:%M:%S%z)" -o clean_file +make build ``` diff --git a/main.go b/main.go index 821bac8..7c9f38c 100644 --- a/main.go +++ b/main.go @@ -1,11 +1,13 @@ package main +import "flag" import "fmt" import "os" + import "git.kundeng.us/phoenix/clean_file/parser" +import "git.kundeng.us/phoenix/clean_file/version" func main() { - fmt.Println("clean_file") args := os.Args if len(args) < 2 { @@ -13,6 +15,15 @@ func main() { os.Exit(-1) } + versionFlag := flag.Bool("version", false, "Print version information") + flag.Parse() + + if *versionFlag { + fmt.Println(version.String()) + return + } + + fmt.Println("clean_file") filepath := args[1] fmt.Println("File path:", filepath) diff --git a/version/version.go b/version/version.go index 874433c..91e3782 100644 --- a/version/version.go +++ b/version/version.go @@ -1,7 +1,17 @@ package version +import "fmt" + var ( - Version = "dev" - Commit = "none" - Date = "unknown" + Version = "dev" + BuildTime = "unknown" + Commit = "unknown" + GoVersion = "unknown" ) + +func String() string { + return fmt.Sprintf( + "Version: %s\nBuild Date: %s\nCommit: %s\nGo Version: %s", + Version, BuildTime, Commit, GoVersion, + ) +}