// 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 } } }