44 lines
1015 B
Go
44 lines
1015 B
Go
// Package util manages the daemon-global environment for ollie.
|
|
// It loads $XDG_CONFIG_HOME/ollie/env and provides defaults.
|
|
package util
|
|
|
|
import (
|
|
"bufio"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
)
|
|
|
|
// EnsureEnv loads $XDG_CONFIG_HOME/ollie/env and sets default values for any
|
|
// OLLIE_* vars not already present in the process environment.
|
|
func EnsureEnv() {
|
|
f, err := os.Open(filepath.Join(CfgDir(), "env"))
|
|
if err != nil {
|
|
return
|
|
}
|
|
defer f.Close()
|
|
|
|
sc := bufio.NewScanner(f)
|
|
for sc.Scan() {
|
|
line := strings.TrimSpace(sc.Text())
|
|
if line == "" || strings.HasPrefix(line, "#") {
|
|
continue
|
|
}
|
|
k, v, ok := strings.Cut(line, "=")
|
|
if !ok {
|
|
continue
|
|
}
|
|
k = strings.TrimSpace(k)
|
|
if i := strings.Index(v, " #"); i >= 0 {
|
|
v = v[:i]
|
|
}
|
|
v = strings.TrimSpace(v)
|
|
if len(v) >= 2 && (v[0] == '"' && v[len(v)-1] == '"' || v[0] == '\'' && v[len(v)-1] == '\'') {
|
|
v = v[1 : len(v)-1]
|
|
}
|
|
if k != "" && os.Getenv(k) == "" {
|
|
os.Setenv(k, ExpandHome(os.ExpandEnv(v))) //nolint:errcheck
|
|
}
|
|
}
|
|
}
|