38 lines
774 B
Go
38 lines
774 B
Go
|
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)
|
||
|
}
|