From 841658d8493b5c514428311432eb81005cb55832 Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Wed, 2 Aug 2023 20:06:15 +0200 Subject: [PATCH 1/4] Treat config from environment variables --- config.go | 38 ++++++++++++++++++++++++++++++++++++++ main.go | 2 ++ 2 files changed, 40 insertions(+) create mode 100644 config.go diff --git a/config.go b/config.go new file mode 100644 index 0000000..f9ece2a --- /dev/null +++ b/config.go @@ -0,0 +1,38 @@ +package main + +import ( + "flag" + "fmt" + "os" + "strings" +) + +func parseEnvironmentVariables() (err error) { + for _, line := range os.Environ() { + if strings.HasPrefix(line, "LINKY2INFLUX_") { + err := parseConfigLine(line) + if err != nil { + return fmt.Errorf("error in environment (%q): %w", line, err) + } + } + } + return +} + +func parseConfigLine(line string) (err error) { + fields := strings.SplitN(line, "=", 2) + orig_key := strings.TrimSpace(fields[0]) + value := strings.TrimSpace(fields[1]) + + if len(value) == 0 { + return + } + + key := strings.TrimPrefix(orig_key, "LINKY2INFLUX_") + key = strings.Replace(key, "_", "-", -1) + key = strings.ToLower(key) + + err = flag.Set(key, value) + + return +} diff --git a/main.go b/main.go index 421a06c..46d27ee 100644 --- a/main.go +++ b/main.go @@ -180,6 +180,8 @@ type TICWriter interface { } func main() { + parseEnvironmentVariables() + var legacyMode = flag.Bool("legacy-mode", false, "Assume teleinformation in legacy mode") var pushFrequency = flag.Bool("push-frequency", false, "Also fetch data about the grid frequency") flag.Parse() From de1c9fdd7fa4f99a048f701ce28a936c0c645fed Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Wed, 2 Aug 2023 21:04:38 +0200 Subject: [PATCH 2/4] Add tzdata in container --- Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Dockerfile b/Dockerfile index 5f94095..bf60118 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,6 +12,8 @@ RUN go get -d -v && \ FROM alpine +RUN apk add --no-cache tzdata + CMD ["linky2influx"] COPY --from=gobuild /go/src/git.nemunai.re/linky2influx/linky2influx /usr/bin/linky2influx From 9165b9ad8280384f44d05cb4887c7ce44c67930c Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Wed, 2 Aug 2023 20:06:15 +0200 Subject: [PATCH 3/4] Treat config from environment variables --- config.go | 38 ++++++++++++++++++++++++++++++++++++++ main.go | 2 ++ 2 files changed, 40 insertions(+) create mode 100644 config.go diff --git a/config.go b/config.go new file mode 100644 index 0000000..f9ece2a --- /dev/null +++ b/config.go @@ -0,0 +1,38 @@ +package main + +import ( + "flag" + "fmt" + "os" + "strings" +) + +func parseEnvironmentVariables() (err error) { + for _, line := range os.Environ() { + if strings.HasPrefix(line, "LINKY2INFLUX_") { + err := parseConfigLine(line) + if err != nil { + return fmt.Errorf("error in environment (%q): %w", line, err) + } + } + } + return +} + +func parseConfigLine(line string) (err error) { + fields := strings.SplitN(line, "=", 2) + orig_key := strings.TrimSpace(fields[0]) + value := strings.TrimSpace(fields[1]) + + if len(value) == 0 { + return + } + + key := strings.TrimPrefix(orig_key, "LINKY2INFLUX_") + key = strings.Replace(key, "_", "-", -1) + key = strings.ToLower(key) + + err = flag.Set(key, value) + + return +} diff --git a/main.go b/main.go index 421a06c..b8ebe04 100644 --- a/main.go +++ b/main.go @@ -184,6 +184,8 @@ func main() { var pushFrequency = flag.Bool("push-frequency", false, "Also fetch data about the grid frequency") flag.Parse() + parseEnvironmentVariables() + if len(flag.Args()) < 1 { log.Println("missing required argument: serial device (eg. /dev/ttyUSB0)") return From 1ef63c3ad49c499419333d117f5962818909e816 Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Wed, 2 Aug 2023 21:04:38 +0200 Subject: [PATCH 4/4] Add tzdata in container --- Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Dockerfile b/Dockerfile index 5f94095..bf60118 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,6 +12,8 @@ RUN go get -d -v && \ FROM alpine +RUN apk add --no-cache tzdata + CMD ["linky2influx"] COPY --from=gobuild /go/src/git.nemunai.re/linky2influx/linky2influx /usr/bin/linky2influx