mirror of
https://github.com/Luzifer/staticmap.git
synced 2024-12-30 01:31:18 +00:00
80 lines
2.5 KiB
Go
80 lines
2.5 KiB
Go
// 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
|
|
}
|