-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathparser.go
More file actions
56 lines (49 loc) · 1.07 KB
/
Copy pathparser.go
File metadata and controls
56 lines (49 loc) · 1.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package parser
import (
"os"
"strings"
)
func toKeyValue(data, pattern string) (string, string) {
items := strings.Split(data, pattern)
if len(items) != 2 {
if pattern == ":" {
return data, "true"
}
return toKeyValue(data, ":")
}
return items[0], items[1]
}
func Args(options map[string]string) map[string]string {
argsWithoutProg := os.Args[1:]
for _, arg := range argsWithoutProg {
key, value := toKeyValue(arg, "=")
if key == "" || value == "" {
continue
}
options[key] = value
}
return options
}
func Env(options map[string]string) map[string]string{
for key, _ := range options {
value := os.Getenv(key)
if value == ""{
continue
}
options[key] = value
}
return options
}
func EnvAll(options map[string]string) map[string]string{
for _, item := range os.Environ() {
pair := strings.Split(item, "=")
options[pair[0]] = pair[1]
}
return options
}
func ArgsJoinEnv(options map[string]string) map[string]string{
return Args(Env(options))
}
func ArgsJoinEnvAll(options map[string]string) map[string]string{
return Args(EnvAll(options))
}