From 9aa8df23dce2314a9919d2426f953b06dd694d10 Mon Sep 17 00:00:00 2001 From: Andrejs Cainikovs Date: Tue, 11 Jul 2023 15:28:58 +0200 Subject: [PATCH 1/4] Avoid double calls of os.Getenv() --- src/settings.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/settings.go b/src/settings.go index 66b7909..a7180e4 100644 --- a/src/settings.go +++ b/src/settings.go @@ -58,16 +58,18 @@ func (settings *Settings) boolFlagEnv(p *bool, name string, env string, value bo func (settings *Settings) int64FlagEnv(p *int64, name string, env string, value int64, usage string) { flag.Int64Var(p, name, value, usage+" (env "+env+")") - if os.Getenv(env) != "" { - i, _ := strconv.ParseInt(os.Getenv(env), 10, 0) + val := os.Getenv(env) + if val != "" { + i, _ := strconv.ParseInt(val, 10, 0) *p = i } } func (settings *Settings) stringFlagEnv(p *string, name string, env string, value string, usage string) { flag.StringVar(p, name, value, usage+" (env "+env+")") - if os.Getenv(env) != "" { - *p = os.Getenv(env) + val := os.Getenv(env) + if val != "" { + *p = val } } From 2f1f777b96d447c44666192fc758e1da29b7662b Mon Sep 17 00:00:00 2001 From: Andrejs Cainikovs Date: Tue, 11 Jul 2023 15:31:05 +0200 Subject: [PATCH 2/4] Add strconv.ParseInt error handling --- src/settings.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/settings.go b/src/settings.go index a7180e4..f2da7dd 100644 --- a/src/settings.go +++ b/src/settings.go @@ -60,7 +60,10 @@ func (settings *Settings) int64FlagEnv(p *int64, name string, env string, value flag.Int64Var(p, name, value, usage+" (env "+env+")") val := os.Getenv(env) if val != "" { - i, _ := strconv.ParseInt(val, 10, 0) + i, err := strconv.ParseInt(val, 10, 0) + if err != nil { + log.Fatal(err) + } *p = i } } From b2994c0d0894b4c0d92b86e7a81544942bfd895a Mon Sep 17 00:00:00 2001 From: Andrejs Cainikovs Date: Tue, 11 Jul 2023 15:44:34 +0200 Subject: [PATCH 3/4] Rework boolean option check --- src/settings.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/settings.go b/src/settings.go index f2da7dd..d06ab0f 100644 --- a/src/settings.go +++ b/src/settings.go @@ -5,7 +5,6 @@ import ( "log" "os" "strconv" - "strings" ) // Settings holds the program runtime configuration @@ -51,8 +50,12 @@ func ReadSettings() { func (settings *Settings) boolFlagEnv(p *bool, name string, env string, value bool, usage string) { flag.BoolVar(p, name, value, usage+" (env "+env+")") val := os.Getenv(env) - if (val != "") && (val != "0") && (strings.ToLower(val) != "false") { - *p = true + if val != "" { + b, err := strconv.ParseBool(val) + if err != nil { + log.Fatal(err) + } + *p = b } } From 6ae0863a665aed069399ff947552811e9f4c5c11 Mon Sep 17 00:00:00 2001 From: Andrejs Cainikovs Date: Tue, 11 Jul 2023 15:54:59 +0200 Subject: [PATCH 4/4] Change 'once' default value to false --- Dockerfile | 2 +- src/settings.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 58bd37f..1a56be2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -34,4 +34,4 @@ RUN \ curl -SLf https://github.com/docker/compose/releases/download/v${COMPOSE_VERSION}/docker-compose-linux-${DOWNLOAD_ARCH} -o /usr/local/lib/docker/cli-plugins/docker-compose && \ chmod +x /usr/local/lib/docker/cli-plugins/docker-compose COPY --from=builder /go/src/app/main /usr/local/bin/docker-compose-watcher -CMD ["docker-compose-watcher", "-once=0", "-printSettings"] +CMD ["docker-compose-watcher", "-printSettings"] diff --git a/src/settings.go b/src/settings.go index d06ab0f..9298b3a 100644 --- a/src/settings.go +++ b/src/settings.go @@ -33,7 +33,7 @@ func ReadSettings() { s.boolFlagEnv(&s.Dry, "dry", "DRY", false, "dry run: check and pull, but don't restart") s.boolFlagEnv(&s.Help, "help", "HELP", false, "print usage instructions") s.int64FlagEnv(&s.Interval, "interval", "INTERVAL", 60, "interval in minutes between runs") - s.boolFlagEnv(&s.Once, "once", "ONCE", true, "run once and exit, do not run in background") + s.boolFlagEnv(&s.Once, "once", "ONCE", false, "run once and exit, do not run in background") s.boolFlagEnv(&s.PrintSettings, "printSettings", "PRINT_SETTINGS", false, "print used settings") s.stringFlagEnv(&s.UpdateLog, "updateLog", "UPDATE_LOG", "", "update log file") //s.boolFlagEnv(&s.CompleteStop, "completeStop", "COMPLETE_STOP", false, "Restart all services in docker-compose.yml (even unmanaged) after a new image is pulled")