1package opts 2 3import ( 4 "os" 5 "strings" 6 7 "github.com/pkg/errors" 8) 9 10// ValidateEnv validates an environment variable and returns it. 11// If no value is specified, it obtains its value from the current environment 12// 13// As on ParseEnvFile and related to #16585, environment variable names 14// are not validated, and it's up to the application inside the container 15// to validate them or not. 16// 17// The only validation here is to check if name is empty, per #25099 18func ValidateEnv(val string) (string, error) { 19 arr := strings.SplitN(val, "=", 2) 20 if arr[0] == "" { 21 return "", errors.New("invalid environment variable: " + val) 22 } 23 if len(arr) > 1 { 24 return val, nil 25 } 26 if envVal, ok := os.LookupEnv(arr[0]); ok { 27 return arr[0] + "=" + envVal, nil 28 } 29 return val, nil 30} 31