From 72d145aaa5e1d4aeba0fada8c9c1177e1997934e Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Thu, 26 Dec 2024 21:00:35 -0500 Subject: [PATCH] Add env var support --- main.go | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/main.go b/main.go index c12f2d6..e514afc 100644 --- a/main.go +++ b/main.go @@ -222,6 +222,13 @@ func resolveDomain(domain string) (string, error) { return ipAddr, nil } +func getEnvWithDefault(key, defaultValue string) string { + if value := os.Getenv(key); value != "" { + return value + } + return defaultValue +} + func main() { var ( endpoint string @@ -233,14 +240,20 @@ func main() { logLevel string ) - flag.StringVar(&endpoint, "endpoint", "", "Endpoint of your pangolin server") - flag.StringVar(&id, "id", "", "Newt ID") - flag.StringVar(&secret, "secret", "", "Newt secret") - flag.StringVar(&dns, "dns", "8.8.8.8", "DNS server to use") - flag.StringVar(&logLevel, "log-level", "INFO", "Log level (DEBUG, INFO, WARN, ERROR, FATAL)") - + // Define CLI flags with default values from environment variables + flag.StringVar(&endpoint, "endpoint", os.Getenv("PANGOLIN_ENDPOINT"), "Endpoint of your pangolin server") + flag.StringVar(&id, "id", os.Getenv("NEWT_ID"), "Newt ID") + flag.StringVar(&secret, "secret", os.Getenv("NEWT_SECRET"), "Newt secret") + flag.StringVar(&dns, "dns", getEnvWithDefault("DEFAULT_DNS", "8.8.8.8"), "DNS server to use") + flag.StringVar(&logLevel, "log-level", getEnvWithDefault("LOG_LEVEL", "INFO"), "Log level (DEBUG, INFO, WARN, ERROR, FATAL)") flag.Parse() + // Validate required fields + if endpoint == "" || id == "" || secret == "" { + logger.Fatal("endpoint, id, and secret are required either via CLI flags or environment variables") + + } + logger.Init() loggerLevel := parseLogLevel(logLevel) logger.GetLogger().SetLevel(parseLogLevel(logLevel))