package path_util import ( "os" "os/user" "strings" ) func ReplaceTildeWithHome(path string) (string, error) { if strings.HasPrefix(path, "~") { firstSlash := strings.Index(path, "/") if firstSlash == 1 { home, err := os.UserHomeDir() if err != nil { return path, err } return strings.Replace(path, "~", home, 1), nil } else if firstSlash > 1 { username := path[1:firstSlash] userAccount, err := user.Lookup(username) if err != nil { return path, err } return strings.Replace(path, path[:firstSlash], userAccount.HomeDir, 1), nil } } return path, nil }