package daecommon import ( "os" "path/filepath" "sync" "github.com/adrg/xdg" ) // EnvVars are variables which are derived based on the environment which the // process is running in. type EnvVars struct { RuntimeDirPath string StateDirPath string } // GetEnvVars will return the EnvVars of the current processes, as determined by // the process's environment. var GetEnvVars = sync.OnceValue(func() (v EnvVars) { // RUNTIME_DIRECTORY/STATE_DIRECTORY are used by the systemd service in // conjunction with the RuntimeDirectory/StateDirectory directives. v.RuntimeDirPath = envOr( "RUNTIME_DIRECTORY", func() string { return filepath.Join(xdg.RuntimeDir, "isle") }, ) v.StateDirPath = envOr( "STATE_DIRECTORY", func() string { return filepath.Join(xdg.StateHome, "isle") }, ) return }) //////////////////////////////////////////////////////////////////////////////// // Jigs func envOr(name string, fallback func() string) string { if v := os.Getenv(name); v != "" { return v } return fallback() }