/
config.go
61 lines (53 loc) · 1.15 KB
/
config.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
package sca
import (
"fmt"
"os"
)
const (
envRunnerListen = "HYPERAGENT_RUNNER_LISTEN"
envRunnerName = "HYPERAGENT_RUNNER_NAME"
envRunnerIp = "HYPERAGENT_RUNNER_IP"
envLeaderListen = "HYPERAGENT_LEADER_LISTEN"
)
type Config struct {
RunnerName string
RunnerListen string
LeaderListen string
RunnerIp string
}
func (cfg *Config) FromEnv() (err error) {
cfg.RunnerIp = runnerIp()
cfg.RunnerName = runnerName()
cfg.RunnerListen = runnerListen()
cfg.LeaderListen = leaderListen()
return
}
func runnerIp() (ip string) {
if ip = os.Getenv(envRunnerIp); ip == "" {
ip = FirstIPV4().String()
os.Setenv(envRunnerIp, ip)
}
return
}
func runnerListen() (runner string) {
if runner = os.Getenv(envRunnerListen); runner == "" {
runner = fmt.Sprintf("tcp://%s:49160", runnerIp())
os.Setenv(envRunnerListen, runner)
}
return
}
func leaderListen() (leader string) {
leader = os.Getenv(envLeaderListen)
return
}
func runnerName() (name string) {
if name = os.Getenv(envRunnerName); name == "" {
if hostname, err := os.Hostname(); err != nil {
panic(err)
} else {
name = hostname
}
os.Setenv(envRunnerName, name)
}
return
}