diff --git a/Dockerfile b/Dockerfile index ffcac62..1c0e9c8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,7 +6,10 @@ COPY go.mod go.sum ./ RUN go mod download COPY . . ENV CGO_ENABLED=1 -RUN go build -ldflags="-s -w" -o go-upkeep ./cmd/goupkeep/main.go +ARG VERSION=dev +ARG COMMIT=none +ARG BUILD_DATE=unknown +RUN go build -ldflags="-s -w -X main.version=${VERSION} -X main.commit=${COMMIT} -X main.date=${BUILD_DATE}" -o go-upkeep ./cmd/goupkeep/main.go # --- Stage 2: Runner --- FROM alpine:latest diff --git a/cmd/goupkeep/main.go b/cmd/goupkeep/main.go index 54abb8b..00e389b 100644 --- a/cmd/goupkeep/main.go +++ b/cmd/goupkeep/main.go @@ -27,6 +27,12 @@ import ( "github.com/mattn/go-isatty" ) +var ( + version = "dev" + commit = "none" + date = "unknown" +) + func main() { log.SetOutput(os.Stderr) @@ -38,11 +44,22 @@ func main() { case "export": runExport(os.Args[2:]) return + case "version", "--version", "-v": + printVersion() + return } } runServe(os.Args[1:]) } +func printVersion() { + if version == "dev" { + fmt.Println("go-upkeep dev") + } else { + fmt.Printf("go-upkeep %s (%s, %s)\n", version, commit, date) + } +} + func envOrDefault(key, fallback string) string { if v := os.Getenv(key); v != "" { return v