From bcf78eff303c4bfcb53e95d3f50040f124664308 Mon Sep 17 00:00:00 2001 From: Syuparn Date: Mon, 22 Feb 2021 10:47:39 +0900 Subject: [PATCH] add -v option --- main.go | 14 ++++++++++---- version.go | 25 +++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 4 deletions(-) create mode 100644 version.go diff --git a/main.go b/main.go index 114c3a0..2754be5 100644 --- a/main.go +++ b/main.go @@ -12,15 +12,21 @@ import ( ) var ( - fileName = flag.String("f", "", "use template file") - runsREPL = flag.Bool("i", false, "run interactive REPL instead") - leftDelim = flag.String("ldelim", "{{", "specify left deliminater") - rightDelim = flag.String("rdelim", "}}", "specify right deliminater") + fileName = flag.String("f", "", "use template file") + runsREPL = flag.Bool("i", false, "run interactive REPL instead") + showsVersion = flag.Bool("v", false, "show version") + leftDelim = flag.String("ldelim", "{{", "specify left deliminater") + rightDelim = flag.String("rdelim", "}}", "specify right deliminater") ) func main() { flag.Parse() + if *showsVersion { + fmt.Println(versionStr()) + return + } + tmpl := newTemplate(*leftDelim, *rightDelim) if *runsREPL { diff --git a/version.go b/version.go new file mode 100644 index 0000000..d6ecc8b --- /dev/null +++ b/version.go @@ -0,0 +1,25 @@ +package main + +import ( + "runtime/debug" +) + +const defaultVersion = "development" + +var version = "" + +func versionStr() string { + // 1. if version is set (by goreleaser for example), show it + if version != "" { + return version + } + + // 2. if runtime version is set (by go get for example), show it + info, ok := debug.ReadBuildInfo() + if ok { + return info.Main.Version + } + + // 3. show default version + return defaultVersion +}