github.com/iqoqo/nomad@v0.11.3-0.20200911112621-d7021c74d101/helper/args/args.go (about)

     1  package args
     2  
     3  import "regexp"
     4  
     5  var (
     6  	envRe = regexp.MustCompile(`\${[a-zA-Z0-9_\-\.]+}`)
     7  )
     8  
     9  // ReplaceEnv takes an arg and replaces all occurrences of environment variables.
    10  // If the variable is found in the passed map it is replaced, otherwise the
    11  // original string is returned.
    12  func ReplaceEnv(arg string, environments ...map[string]string) string {
    13  	return envRe.ReplaceAllStringFunc(arg, func(arg string) string {
    14  		stripped := arg[2 : len(arg)-1]
    15  		for _, env := range environments {
    16  			if value, ok := env[stripped]; ok {
    17  				return value
    18  			}
    19  		}
    20  
    21  		return arg
    22  	})
    23  }
    24  
    25  // ReplaceEnvWithPlaceHolder replaces all occurrences of environment variables with the placeholder string.
    26  func ReplaceEnvWithPlaceHolder(arg string, placeholder string) string {
    27  	return envRe.ReplaceAllString(arg, placeholder)
    28  }
    29  
    30  // ContainsEnv takes an arg and returns true if if contains an environment variable reference
    31  func ContainsEnv(arg string) bool {
    32  	return envRe.MatchString(arg)
    33  }