12 // Exists returns whether the given file or directory exists or not
13 func Exists(path string) bool {
14 _, err := os.Stat(path)
18 if os.IsNotExist(err) {
24 // ResolveEnvVar Resolved environment variable regarding the syntax ${MYVAR}
25 // or $MYVAR following by a slash or a backslash
26 func ResolveEnvVar(s string) (string, error) {
31 // Resolved tilde : ~/
32 if len(s) > 2 && s[:2] == "~/" {
33 if usr, err := user.Current(); err == nil {
34 s = filepath.Join(usr.HomeDir, s[2:])
39 re := regexp.MustCompile("\\${([^}]+)}")
40 vars := re.FindAllStringSubmatch(s, -1)
42 for _, v := range vars {
43 val := os.Getenv(v[1])
45 return res, fmt.Errorf("ERROR: %s env variable not defined", v[1])
48 rer := regexp.MustCompile("\\${" + v[1] + "}")
49 res = rer.ReplaceAllString(res, val)
52 // Resolved $MYVAR following by a slash (or a backslash for Windows)
54 //re := regexp.MustCompile("\\$([^\\/])+/")
56 return path.Clean(res), nil