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