xmtop/vendor/github.com/ProtonMail/go-appdir
2019-01-14 20:19:17 -08:00
..
.gitignore Add go vendor 2019-01-14 20:19:17 -08:00
appdir_darwin.go Add go vendor 2019-01-14 20:19:17 -08:00
appdir_windows.go Add go vendor 2019-01-14 20:19:17 -08:00
appdir_xdg.go Add go vendor 2019-01-14 20:19:17 -08:00
appdir.go Add go vendor 2019-01-14 20:19:17 -08:00
LICENSE Add go vendor 2019-01-14 20:19:17 -08:00
main.go Add go vendor 2019-01-14 20:19:17 -08:00
README.md Add go vendor 2019-01-14 20:19:17 -08:00

go-appdir

GoDoc

Minimalistic Go package to get application directories such as config and cache.

Platform Windows Linux/BSDs macOS
User-specific config %APPDATA% (C:\Users\%USERNAME%\AppData\Roaming) $XDG_CONFIG_HOME ($HOME/.config) $HOME/Library/Application Support
User-specific cache %LOCALAPPDATA% (C:\Users\%USERNAME%\AppData\Local) $XDG_CACHE_HOME ($HOME/.cache) $HOME/Library/Caches
User-specific logs %LOCALAPPDATA% (C:\Users\%USERNAME%\AppData\Local) $XDG_STATE_HOME ($HOME/.local/state) $HOME/Library/Logs

Inspired by configdir.

Usage

package main

import (
	"os"
	"path/filepath"

	"github.com/ProtonMail/go-appdir"
)

func main() {
	// Get directories for our app
	dirs := appdir.New("my-awesome-app")

	// Get user-specific config dir
	p := dirs.UserConfig()

	// Create our app config dir
	if err := os.MkdirAll(p, 0755); err != nil {
		panic(err)
	}

	// Now we can use it
	f, err := os.Create(filepath.Join(p, "config-file"))
	if err != nil {
		panic(err)
	}
	defer f.Close()

	f.Write([]byte("<3"))
}

License

MIT