github.com/franc20/ayesa_sap@v7.0.0-beta.28.0.20200124003224-302d4d52fa6c+incompatible/command/flag/environment_variable.go (about) 1 package flag 2 3 import ( 4 "fmt" 5 "os" 6 "strings" 7 8 flags "github.com/jessevdk/go-flags" 9 ) 10 11 // WorkAroundPrefix is the flag in hole emoji 12 const WorkAroundPrefix = "\U000026f3" 13 14 type EnvironmentVariable string 15 16 func (EnvironmentVariable) Complete(prefix string) []flags.Completion { 17 if prefix == "" || prefix[0] != '$' { 18 return nil 19 } 20 21 keyValPairs := os.Environ() 22 envVars := make([]string, len(keyValPairs)) 23 for i, keyValPair := range keyValPairs { 24 envVars[i] = fmt.Sprintf("$%s", strings.Split(keyValPair, "=")[0]) 25 } 26 27 return completions(envVars, prefix, true) 28 } 29 30 func (e *EnvironmentVariable) UnmarshalFlag(val string) error { 31 *e = EnvironmentVariable(strings.TrimLeft(val, WorkAroundPrefix)) 32 return nil 33 }