From cf1e599be85fe86a96c451cc8a81b10762a6e393 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emmanuel=20BENO=C3=8ET?= Date: Fri, 26 Jul 2024 13:06:45 +0200 Subject: [PATCH] feat: add version data and display --- main.go | 10 +++++++++- version.go | 27 +++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 version.go diff --git a/main.go b/main.go index 6d7867a..911af36 100644 --- a/main.go +++ b/main.go @@ -1,6 +1,7 @@ package main import ( + "fmt" "os" "github.com/karrick/golf" @@ -41,7 +42,7 @@ type ( // Parse command line options. func parseCommandLine() tCliFlags { - var help bool + var help, version bool flags := tCliFlags{} golf.StringVarP(&flags.cfgFile, 'c', "config", "/etc/fetch-certificates.yml", @@ -70,10 +71,17 @@ func parseCommandLine() tCliFlags { golf.StringVarP(&flags.selector, 'u', "update", "*", "LDAP DN of the certificate to select, or '*' to update all "+ "certificates.") + golf.BoolVarP(&version, 'v', "version", false, "Display version and exit.") golf.Parse() + if version || help { + fmt.Println("fetchcert", versionString()) + } if help { + fmt.Println() golf.Usage() + } + if version || help { os.Exit(0) } return flags diff --git a/version.go b/version.go new file mode 100644 index 0000000..6b661eb --- /dev/null +++ b/version.go @@ -0,0 +1,27 @@ +package main + +import "fmt" + +var ( + version = "" + commit = "unknown" + status = "" + target = "unknown/unknown" +) + +func versionString() string { + var schar, ver string + if status == "dirty" { + schar = "*" + } else { + schar = "" + } + + if version == "" { + ver = "development version" + } else { + ver = version + } + + return fmt.Sprintf("%s (%s%s) %s", ver, commit, schar, target) +}