forked from mailgun/gubernator
-
Notifications
You must be signed in to change notification settings - Fork 0
/
flags.go
43 lines (36 loc) · 787 Bytes
/
flags.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
package gubernator
import "github.com/sirupsen/logrus"
const (
FlagOSMetrics MetricFlags = 1 << iota
FlagGolangMetrics
)
type MetricFlags int64
func (f *MetricFlags) Set(flag MetricFlags, set bool) {
if set {
*f = *f | flag
} else {
mask := *f ^ flag
*f &= mask
}
}
func (f *MetricFlags) Has(flag MetricFlags) bool {
return *f&flag != 0
}
func getEnvMetricFlags(log logrus.FieldLogger, name string) MetricFlags {
flags := getEnvSlice(name)
if len(flags) == 0 {
return 0
}
var result MetricFlags
for _, f := range flags {
switch f {
case "os":
result.Set(FlagOSMetrics, true)
case "golang":
result.Set(FlagGolangMetrics, true)
default:
log.Errorf("invalid flag '%s' for '%s' valid options are ['os', 'golang']", f, name)
}
}
return result
}