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) {
28 // Resolved tilde : ~/
30 if usr, err := user.Current(); err == nil {
31 s = filepath.Join(usr.HomeDir, s[2:])
36 re := regexp.MustCompile("\\${([^}]+)}")
37 vars := re.FindAllStringSubmatch(s, -1)
39 for _, v := range vars {
40 val := os.Getenv(v[1])
42 return res, fmt.Errorf("ERROR: %s env variable not defined", v[1])
45 rer := regexp.MustCompile("\\${" + v[1] + "}")
46 res = rer.ReplaceAllString(res, val)
49 // Resolved $MYVAR following by a slash (or a backslash for Windows)
51 //re := regexp.MustCompile("\\$([^\\/])+/")
53 return path.Clean(res), nil