blob: 8beb10b3fa9b88c31d91aca48ba6d3217235abde [file] [log] [blame]
// Copyright 2015 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package main
import (
"os"
"os/user"
"path/filepath"
"runtime"
)
// xdgCacheDir returns the XDG Base Directory Specification cache
// directory.
func xdgCacheDir() string {
cache := os.Getenv("XDG_CACHE_HOME")
if cache == "" {
home := os.Getenv("HOME")
if home == "" {
u, err := user.Current()
if err != nil {
home = u.HomeDir
}
}
// Not XDG but standard for OS X.
if runtime.GOOS == "darwin" {
return filepath.Join(home, "Library/Caches")
}
cache = filepath.Join(home, ".cache")
}
return cache
}
// xdgCreateDir creates a directory and its parents in accordance with
// the XDG Base Directory Specification.
func xdgCreateDir(path string) error {
return os.MkdirAll(path, 0700)
}