1package kingpin 2 3import ( 4 "os" 5 "regexp" 6) 7 8var ( 9 envVarValuesSeparator = "\r?\n" 10 envVarValuesTrimmer = regexp.MustCompile(envVarValuesSeparator + "$") 11 envVarValuesSplitter = regexp.MustCompile(envVarValuesSeparator) 12) 13 14type envarMixin struct { 15 envar string 16 noEnvar bool 17} 18 19func (e *envarMixin) HasEnvarValue() bool { 20 return e.GetEnvarValue() != "" 21} 22 23func (e *envarMixin) GetEnvarValue() string { 24 if e.noEnvar || e.envar == "" { 25 return "" 26 } 27 return os.Getenv(e.envar) 28} 29 30func (e *envarMixin) GetSplitEnvarValue() []string { 31 values := make([]string, 0) 32 33 envarValue := e.GetEnvarValue() 34 if envarValue == "" { 35 return values 36 } 37 38 // Split by new line to extract multiple values, if any. 39 trimmed := envVarValuesTrimmer.ReplaceAllString(envarValue, "") 40 for _, value := range envVarValuesSplitter.Split(trimmed, -1) { 41 values = append(values, value) 42 } 43 44 return values 45} 46