-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathplatform.go
More file actions
143 lines (127 loc) · 2.86 KB
/
platform.go
File metadata and controls
143 lines (127 loc) · 2.86 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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
package com
import (
"log"
"os"
"runtime"
"strings"
"time"
)
const (
IsWindows = runtime.GOOS == "windows"
IsLinux = runtime.GOOS == "linux"
IsMac = runtime.GOOS == "darwin"
Is32Bit = runtime.GOARCH == "386"
Is64Bit = runtime.GOARCH == "amd64"
)
// ExitOnSuccess 成功时退出程序
func ExitOnSuccess(msg string) {
os.Stdout.WriteString(msg)
if !strings.HasSuffix(msg, StrLF) {
os.Stdout.WriteString(StrLF)
}
os.Exit(0)
}
// ExitOnFailure 失败时退出程序
func ExitOnFailure(msg string, errCodes ...int) {
errCode := 1
if len(errCodes) > 0 {
errCode = errCodes[0]
}
os.Stderr.WriteString(msg)
if !strings.HasSuffix(msg, StrLF) {
os.Stdout.WriteString(StrLF)
}
os.Exit(errCode)
}
func GetenvOr(key string) string {
parts := strings.SplitN(key, `:`, 2)
v := os.Getenv(parts[0])
if len(v) == 0 && len(parts) == 2 {
v = parts[1]
}
return v
}
func Getenv(key string, defaults ...string) string {
v := os.Getenv(key)
if len(v) == 0 && len(defaults) > 0 {
return defaults[0]
}
return v
}
func GetenvInt(key string, defaults ...int) int {
v := os.Getenv(key)
if len(v) == 0 && len(defaults) > 0 {
return defaults[0]
}
return Int(v)
}
func GetenvUint(key string, defaults ...uint) uint {
v := os.Getenv(key)
if len(v) == 0 && len(defaults) > 0 {
return defaults[0]
}
return Uint(v)
}
func GetenvInt64(key string, defaults ...int64) int64 {
v := os.Getenv(key)
if len(v) == 0 && len(defaults) > 0 {
return defaults[0]
}
return Int64(v)
}
func GetenvUint64(key string, defaults ...uint64) uint64 {
v := os.Getenv(key)
if len(v) == 0 && len(defaults) > 0 {
return defaults[0]
}
return Uint64(v)
}
func GetenvInt32(key string, defaults ...int32) int32 {
v := os.Getenv(key)
if len(v) == 0 && len(defaults) > 0 {
return defaults[0]
}
return Int32(v)
}
func GetenvUint32(key string, defaults ...uint32) uint32 {
v := os.Getenv(key)
if len(v) == 0 && len(defaults) > 0 {
return defaults[0]
}
return Uint32(v)
}
func GetenvFloat32(key string, defaults ...float32) float32 {
v := os.Getenv(key)
if len(v) == 0 && len(defaults) > 0 {
return defaults[0]
}
return Float32(v)
}
func GetenvFloat64(key string, defaults ...float64) float64 {
v := os.Getenv(key)
if len(v) == 0 && len(defaults) > 0 {
return defaults[0]
}
return Float64(v)
}
func GetenvBool(key string, defaults ...bool) bool {
v := os.Getenv(key)
if len(v) == 0 && len(defaults) > 0 {
return defaults[0]
}
return Bool(v)
}
func GetenvDuration(key string, defaults ...time.Duration) time.Duration {
v := os.Getenv(key)
if len(v) > 0 {
t, err := time.ParseDuration(v)
if err == nil {
return t
}
log.Printf("GetenvDuration: %v: %v\n", v, err)
}
if len(defaults) > 0 {
return defaults[0]
}
return 0
}