diff --git a/homedir/homedir.go b/homedir/homedir.go new file mode 100644 index 00000000..61f77ba3 --- /dev/null +++ b/homedir/homedir.go @@ -0,0 +1,49 @@ +// Package homedir helps with detecting and expanding the user's home directory + +// Copied verbatim from https://github.com/Atrox/homedir + +package homedir + +import ( + "errors" + "os/user" + "path/filepath" +) + +// Dir returns the home directory for the executing user. +// An error is returned if a home directory cannot be detected. +func Dir() (string, error) { + currentUser, err := user.Current() + if err != nil { + return "", err + } + if currentUser.HomeDir == "" { + return "", errors.New("cannot find user-specific home dir") + } + + return currentUser.HomeDir, nil +} + +// Expand expands the path to include the home directory if the path +// is prefixed with `~`. If it isn't prefixed with `~`, the path is +// returned as-is. +func Expand(path string) (string, error) { + if len(path) == 0 { + return path, nil + } + + if path[0] != '~' { + return path, nil + } + + if len(path) > 1 && path[1] != '/' && path[1] != '\\' { + return "", errors.New("cannot expand user-specific home dir") + } + + dir, err := Dir() + if err != nil { + return "", err + } + + return filepath.Join(dir, path[1:]), nil +} diff --git a/wtf.go b/wtf.go index 33f0411c..ebfba560 100644 --- a/wtf.go +++ b/wtf.go @@ -8,6 +8,7 @@ import ( "github.com/senorprogrammer/wtf/bamboohr" "github.com/senorprogrammer/wtf/gcal" "github.com/senorprogrammer/wtf/git" + "github.com/senorprogrammer/wtf/homedir" "github.com/senorprogrammer/wtf/jira" "github.com/senorprogrammer/wtf/opsgenie" "github.com/senorprogrammer/wtf/security" @@ -18,7 +19,9 @@ import ( var Config = loadConfig() func loadConfig() *config.Config { - cfg, err := config.ParseYamlFile("./config.yml") + configPath, _ := homedir.Expand("~/.wtf/config.yml") + + cfg, err := config.ParseYamlFile(configPath) if err != nil { panic(err) }