forked from cloudfoundry/cli
-
Notifications
You must be signed in to change notification settings - Fork 0
/
env.go
145 lines (127 loc) · 3.83 KB
/
env.go
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
144
145
package configv3
import (
"strconv"
"strings"
"time"
)
// EnvOverride represents all the environment variables read by the CF CLI
type EnvOverride struct {
BinaryName string
CFColor string
CFDialTimeout string
CFHome string
CFLogLevel string
CFPassword string
CFPluginHome string
CFStagingTimeout string
CFStartupTimeout string
CFTrace string
CFUsername string
DockerPassword string
Experimental string
ForceTTY string
HTTPSProxy string
Lang string
LCAll string
}
// BinaryName returns the running name of the CF CLI
func (config *Config) BinaryName() string {
return config.ENV.BinaryName
}
// CFPassword returns the value of the "CF_PASSWORD" environment variable.
func (config *Config) CFPassword() string {
return config.ENV.CFPassword
}
// CFUsername returns the value of the "CF_USERNAME" environment variable.
func (config *Config) CFUsername() string {
return config.ENV.CFUsername
}
// DialTimeout returns the timeout to use when dialing. This is based off of:
// 1. The $CF_DIAL_TIMEOUT environment variable if set
// 2. Defaults to 5 seconds
func (config *Config) DialTimeout() time.Duration {
if config.ENV.CFDialTimeout != "" {
envVal, err := strconv.ParseInt(config.ENV.CFDialTimeout, 10, 64)
if err == nil {
return time.Duration(envVal) * time.Second
}
}
return DefaultDialTimeout
}
// DockerPassword returns the docker password from the environment.
func (config *Config) DockerPassword() string {
return config.ENV.DockerPassword
}
// Experimental returns whether or not to run experimental CLI commands. This
// is based on the following:
// 1. The $CF_CLI_EXPERIMENTAL environment variable if set
// 2. Defaults to false
func (config *Config) Experimental() bool {
if config.ENV.Experimental != "" {
envVal, err := strconv.ParseBool(config.ENV.Experimental)
if err == nil {
return envVal
}
}
return false
}
// HTTPSProxy returns the proxy url that the CLI should use. The url is based
// off of:
// 1. The $https_proxy environment variable if set
// 2. Defaults to the empty string
func (config *Config) HTTPSProxy() string {
return config.ENV.HTTPSProxy
}
// LogLevel returns the global log level. The levels follow Logrus's log level
// scheme. This value is based off of:
// - The $CF_LOG_LEVEL and an int/warn/info/etc...
// - Defaults to PANIC/0 (ie no logging)
func (config *Config) LogLevel() int {
if config.ENV.CFLogLevel != "" {
envVal, err := strconv.ParseInt(config.ENV.CFLogLevel, 10, 32)
if err == nil {
return int(envVal)
}
switch strings.ToLower(config.ENV.CFLogLevel) {
case "fatal":
return 1
case "error":
return 2
case "warn":
return 3
case "info":
return 4
case "debug":
return 5
}
}
return 0
}
// StagingTimeout returns the max time an application staging should take. The
// time is based off of:
// 1. The $CF_STAGING_TIMEOUT environment variable if set
// 2. Defaults to the DefaultStagingTimeout
func (config *Config) StagingTimeout() time.Duration {
if config.ENV.CFStagingTimeout != "" {
timeoutInMin, err := strconv.ParseFloat(config.ENV.CFStagingTimeout, 64)
timeoutInSec := int64(timeoutInMin * 60)
if err == nil {
return time.Duration(timeoutInSec) * time.Second
}
}
return DefaultStagingTimeout
}
// StartupTimeout returns the max time an application should take to start. The
// time is based off of:
// 1. The $CF_STARTUP_TIMEOUT environment variable if set
// 2. Defaults to the DefaultStartupTimeout
func (config *Config) StartupTimeout() time.Duration {
if config.ENV.CFStartupTimeout != "" {
timeoutInMin, err := strconv.ParseFloat(config.ENV.CFStartupTimeout, 64)
timeoutInSec := int64(timeoutInMin * 60)
if err == nil {
return time.Duration(timeoutInSec) * time.Second
}
}
return DefaultStartupTimeout
}