go-appdirs

Go package to get application directories such as config and cache.
| User-specific data | $XDG_DATA_HOME OR $HOME/.local/share | $HOME/Library/Application Support | Unsupported |
| User-specific config | $XDG_CONFIG_HOME OR $HOME/.config | $HOME/Library/Application Support | Unsupported |
| User-specific cache | $XDG_CACHE_HOME OR $HOME/.cache | $HOME/Library/Caches | Unsupported |
| User-specific logs | $XDG_CACHE_HOME OR $HOME/.cache | $HOME/Library/Logs | Unsupported |
| Shared data | $XDG_DATA_DIRS OR /usr/local/share | /Library/Application Support | Unsupported |
| Shared config | $XDG_CONFIG_DIRS OR /etc/xdg | /Library/Application Support | Unsupported |
| Shared cache | /tmp/$(APP)-cache | /Library/Caches | Unsupported |
| Shared logs | $(SHARED_DATA)/logs | /Library/Logs | Unsupported |
Forked from emersion, which got forked from ProtonMail's implemention, which was inspired by configdir.
Usage
package main
import (
"os"
"path/filepath"
"xiam.li/appdirs"
)
func main() {
dirs := appdir.New("my-awesome-app")
p := dirs.UserConfig()
if err := os.MkdirAll(p, 0755); err != nil {
panic(err)
}
f, err := os.Create(filepath.Join(p, "config-file"))
if err != nil {
panic(err)
}
defer f.Close()
f.Write([]byte("<3"))
}
License
MIT