1
0
Fork 0
mirror of https://github.com/Luzifer/staticmap.git synced 2024-10-18 23:54:21 +00:00
staticmap/vendor/github.com/Wessie/appdirs/appdirs.go

81 lines
2.5 KiB
Go
Raw Normal View History

// A port of the excellent python module `appdirs`.
// See https://github.com/ActiveState/appdirs for the python version.
package appdirs
import (
"os/user"
"strings"
)
// App is a helper type to create easy access across your program to the appdirs
// functions.
//
// The *App type has 6 methods that map to the 6 functions exported by `appdirs`.
// All methods take no arguments, and supply the function it wraps with arguments
// pre-set in the struct on creation.
type App struct {
Name string
Author string
Version string
Roaming bool
Opinion bool
}
// New returns a new App helper that has various methods for receiving
// relevant directories for your application.
//
// The following defaults are used for the two fields not settable by New:
// Roaming: false, Opinion: true
//
// If you want to set these, create your own App struct by the usual means.
func New(name, author, version string) *App {
return &App{
Name: name,
Author: author,
Version: version,
Roaming: false,
Opinion: true,
}
}
// UserData returns the full path to the user-specific data directory
func (app *App) UserData() string {
return UserDataDir(app.Name, app.Author, app.Version, app.Roaming)
}
// SiteData returns the full path to the user-shared data directory
func (app *App) SiteData() string {
return SiteDataDir(app.Name, app.Author, app.Version)
}
// SiteConfig returns the full path to the user-shared configuration directory
func (app *App) SiteConfig() string {
return SiteConfigDir(app.Name, app.Author, app.Version)
}
// UserConfig returns the full path to the user-specific configuration directory
func (app *App) UserConfig() string {
return UserConfigDir(app.Name, app.Author, app.Version, app.Roaming)
}
// UserCache returns the full path to the user-specific cache directory
func (app *App) UserCache() string {
return UserCacheDir(app.Name, app.Author, app.Version, app.Opinion)
}
// UserLog returns the full path to the user-specific log directory
func (app *App) UserLog() string {
return UserLogDir(app.Name, app.Author, app.Version, app.Opinion)
}
// ExpandUser is a helper function that expands the first '~' it finds in the
// passed path with the home directory of the current user.
//
// Note: This only works on environments similar to bash.
func ExpandUser(path string) string {
if u, err := user.Current(); err == nil {
return strings.Replace(path, "~", u.HomeDir, -1)
}
return path
}