From 14dd1af6dfaff228cbf6734234d99a03a83818c9 Mon Sep 17 00:00:00 2001 From: Amir Raminfar Date: Fri, 11 Aug 2023 10:23:24 -0700 Subject: [PATCH] feat: warns against unexpected env variables (#2345) --- main.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/main.go b/main.go index 64feeb43..b818950a 100644 --- a/main.go +++ b/main.go @@ -7,6 +7,7 @@ import ( "net/http" "os" "os/signal" + "reflect" "strings" "syscall" "time" @@ -232,6 +233,24 @@ func createLocalClient(args args, localClientFactory func(map[string][]string) ( } func parseArgs() args { + argsType := reflect.TypeOf(args{}) + expectedEnvs := make(map[string]bool) + for i := 0; i < argsType.NumField(); i++ { + field := argsType.Field(i) + for _, tag := range strings.Split(field.Tag.Get("arg"), ",") { + if strings.HasPrefix(tag, "env:") { + expectedEnvs[strings.TrimPrefix(tag, "env:")] = true + } + } + } + + for _, env := range os.Environ() { + actual := strings.Split(env, "=")[0] + if strings.HasPrefix(actual, "DOZZLE_") && !expectedEnvs[actual] { + log.Warnf("Unexpected environment variable %s", actual) + } + } + var args args parser := arg.MustParse(&args) args.Filter = make(map[string][]string)