diff options
| author | Martin Kagamino Lehoux <martin@lehoux.net> | 2026-08-03 21:53:04 +0200 |
|---|---|---|
| committer | Martin Kagamino Lehoux <martin@lehoux.net> | 2026-08-03 21:53:04 +0200 |
| commit | 69f317d8cb51b911732712a9fcc8ac49563326c6 (patch) | |
| tree | f8afcada62a43326c7d3fda34e4cd4627b7b0d1c /env.go | |
| parent | 9707f9ad09db935af7d06b5de08bc52de13ba6a7 (diff) | |
feat: Sync Strava rides as GPX files
Diffstat (limited to 'env.go')
| -rw-r--r-- | env.go | 50 |
1 files changed, 50 insertions, 0 deletions
@@ -0,0 +1,50 @@ +package main + +import ( + "os" + "strings" + + "github.com/martinlehoux/kagamigo/kcore" +) + +func loadEnv() map[string]string { + values := map[string]string{} + data, err := os.ReadFile(".env") + if err != nil { + return values + } + for _, line := range strings.Split(string(data), "\n") { + line = strings.TrimSpace(line) + if line == "" || strings.HasPrefix(line, "#") { + continue + } + key, value, found := strings.Cut(line, "=") + if found { + values[strings.TrimSpace(key)] = strings.Trim(strings.TrimSpace(value), `"`) + } + } + return values +} + +func updateEnv(updates map[string]string) { + data, err := os.ReadFile(".env") + kcore.Expect(err, "failed to read .env") + lines := strings.Split(string(data), "\n") + for key, value := range updates { + key = strings.TrimSpace(key) + found := false + for i, line := range lines { + existingKey, _, cut := strings.Cut(strings.TrimSpace(line), "=") + if cut && strings.TrimSpace(existingKey) == key { + lines[i] = key + "=" + value + found = true + break + } + } + if !found { + lines = append(lines, key+"="+value) + } + } + err = os.WriteFile(".env", []byte(strings.Join(lines, "\n")+"\n"), 0o600) + kcore.Expect(err, "failed to write .env") +} |