k3s/vendor/github.com/rancher/norman/pkg/resolvehome/home.go

45 lines
743 B
Go

package resolvehome
import (
"os"
"os/user"
"strings"
"github.com/pkg/errors"
)
var (
homes = []string{"$HOME", "${HOME}", "~"}
)
func Resolve(s string) (string, error) {
for _, home := range homes {
if strings.Contains(s, home) {
homeDir, err := getHomeDir()
if err != nil {
return "", errors.Wrap(err, "determining current user")
}
s = strings.Replace(s, home, homeDir, -1)
}
}
return s, nil
}
func getHomeDir() (string, error) {
home := os.Getenv("HOME")
if home != "" {
return home, nil
}
if os.Getuid() == 0 {
return "/root", nil
}
u, err := user.Current()
if err != nil {
return "", errors.Wrap(err, "determining current user, try set HOME and USER env vars")
}
return u.HomeDir, nil
}