gopkg.in/essentialkaos/ek.v7@v7.4.0/env/env.go (about) 1 // +build !windows 2 3 // Package env provides methods for working with environment variables 4 package env 5 6 // ////////////////////////////////////////////////////////////////////////////////// // 7 // // 8 // Copyright (c) 2009-2017 ESSENTIAL KAOS // 9 // Essential Kaos Open Source License <https://essentialkaos.com/ekol> // 10 // // 11 // ////////////////////////////////////////////////////////////////////////////////// // 12 13 import ( 14 "os" 15 "strconv" 16 "strings" 17 "syscall" 18 ) 19 20 // ////////////////////////////////////////////////////////////////////////////////// // 21 22 // Env is map with environment values 23 type Env map[string]string 24 25 // ////////////////////////////////////////////////////////////////////////////////// // 26 27 // Get return key-value map with environment values 28 func Get() Env { 29 env := make(Env) 30 31 for _, ev := range os.Environ() { 32 evs := strings.Split(ev, "=") 33 k, v := evs[0], evs[1] 34 35 env[k] = v 36 } 37 38 return env 39 } 40 41 // Which find full path to some app 42 func Which(name string) string { 43 paths := Get().Path() 44 45 for _, path := range paths { 46 if syscall.Access(path+"/"+name, syscall.F_OK) == nil { 47 return path + "/" + name 48 } 49 } 50 51 return "" 52 } 53 54 // ////////////////////////////////////////////////////////////////////////////////// // 55 56 // Path return path as string slice 57 func (e Env) Path() []string { 58 return strings.Split(e["PATH"], ":") 59 } 60 61 // GetS return environment variable value as string 62 func (e Env) GetS(name string) string { 63 return e[name] 64 } 65 66 // GetI return environment variable value as int 67 func (e Env) GetI(name string) int { 68 value, err := strconv.Atoi(e[name]) 69 70 if err != nil { 71 return -1 72 } 73 74 return value 75 } 76 77 // GetF return environment variable value as float 78 func (e Env) GetF(name string) float64 { 79 value, err := strconv.ParseFloat(e[name], 64) 80 81 if err != nil { 82 return -1.0 83 } 84 85 return value 86 }