From 61760722a6010d0dd0fbd01b900ee5960e9b5754 Mon Sep 17 00:00:00 2001 From: "Lawrence, Rendall" Date: Sun, 1 Sep 2024 16:20:05 +0300 Subject: [PATCH] add cmd argument to print version --- cmd/mochi/main.go | 20 +++++++++++++++++--- rel.sh | 10 +++++++++- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/cmd/mochi/main.go b/cmd/mochi/main.go index e5bea9f..70b0163 100644 --- a/cmd/mochi/main.go +++ b/cmd/mochi/main.go @@ -3,6 +3,7 @@ package main import ( "flag" + "fmt" "log" "os" "os/signal" @@ -19,20 +20,33 @@ const ( logColorsArg = "logColored" configArg = "config" quickArg = "quick" + versionArg = "version" ) +// Version is variable to set version number in build time +var Version = "dev" + func main() { var err error logOut := flag.String(logOutArg, "stderr", "output for logging, might be 'stderr', 'stdout' or file path") logLevel := flag.String(logLevelArg, "warn", "logging level: trace, debug, info, warn, error, fatal, panic") - logPretty := flag.Bool(logPrettyArg, false, "enable log pretty print. used only if 'logOut' set to 'stdout' or 'stderr'. if not set, log outputs json") + logPretty := flag.Bool(logPrettyArg, false, + "enable log pretty print. used only if 'logOut' set to 'stdout' or 'stderr'. if not set, log outputs json") //goland:noinspection GoBoolExpressions - logColored := flag.Bool(logColorsArg, runtime.GOOS == "windows", "enable log coloring. used only if set 'logPretty'") + logColored := flag.Bool(logColorsArg, runtime.GOOS == "windows", + "enable log coloring. used only if set 'logPretty'") configPath := flag.String(configArg, "/etc/mochi.yaml", "location of configuration file") - quickStart := flag.Bool(quickArg, false, "start tracker with default configuration (all frontends, in-memory store, no hooks)") + quickStart := flag.Bool(quickArg, false, + "start tracker with default configuration (all frontends, in-memory store, no hooks)") + version := flag.Bool(versionArg, false, "print version and exit") flag.Parse() + if *version { + fmt.Println("mochi:", Version) + return + } + if err = l.ConfigureLogger(*logOut, *logLevel, *logPretty, *logColored); err != nil { log.Fatal("unable to configure logger: ", err) } diff --git a/rel.sh b/rel.sh index 1a18ebd..c032449 100755 --- a/rel.sh +++ b/rel.sh @@ -5,13 +5,21 @@ out=$1 src="$PWD" vv="`git describe --tags --abbrev=0`" +if [ -z "$vv" ]; then + vv=`git rev-parse --short HEAD` +fi + +if [ -z "$vv" ]; then + vv=snapshot +fi + tt="`TZ=UTC date +'%Z %F'`" for arch in amd64 arm64; do arch_out="mochi-${vv}-linux-${arch}" mkdir -p "$out/$arch_out" cp dist/example_config*.yaml "$out/$arch_out/" - CGO_ENABLED=0 GOARCH=${arch} go build -trimpath -o "$out/$arch_out/mochi" ./cmd/mochi + CGO_ENABLED=0 GOARCH=${arch} go build -trimpath -ldflags "-X 'main.Version=${vv}'" -o "$out/$arch_out/mochi" ./cmd/mochi strip "$out/$arch_out/mochi" cd "$out" tar -czf "${arch_out}".tar.gz --owner=root --group=root --numeric-owner --mtime="${tt}" "$arch_out"