package autocert import ( "os" "path/filepath" "runtime" ) func homeDir() string { if runtime.GOOS == "windows" { return os.Getenv("HOMEDRIVE") + os.Getenv("HOMEPATH") } if h := os.Getenv("HOME"); h != "" { return h } return "/" } func cacheDir() string { const base = "golang-autocert" switch runtime.GOOS { case "darwin": return filepath.Join(homeDir(), "Library", "Caches", base) case "windows": for _, ev := range []string{"APPDATA", "CSIDL_APPDATA", "TEMP", "TMP"} { if v := os.Getenv(ev); v != "" { return filepath.Join(v, base) } } // Worst case: return filepath.Join(homeDir(), base) } if xdg := os.Getenv("XDG_CACHE_HOME"); xdg != "" { return filepath.Join(xdg, base) } return filepath.Join(homeDir(), ".cache", base) }