forked from cloudfoundry/cli
/
feature_flags_command.go
55 lines (44 loc) · 1.29 KB
/
feature_flags_command.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
package v7
import (
"code.cloudfoundry.org/cli/actor/v7action"
"code.cloudfoundry.org/cli/command/v7/shared"
"code.cloudfoundry.org/cli/util/ui"
)
type FeatureFlagsCommand struct {
BaseCommand
usage interface{} `usage:"CF_NAME feature-flags"`
relatedCommands interface{} `related_commands:"disable-feature-flag, enable-feature-flag, feature-flag"`
}
func (cmd FeatureFlagsCommand) Execute(args []string) error {
err := cmd.SharedActor.CheckTarget(false, false)
if err != nil {
return err
}
user, err := cmd.Config.CurrentUser()
if err != nil {
return err
}
cmd.UI.DisplayTextWithFlavor("Getting feature flags as {{.Username}}...", map[string]interface{}{
"Username": user.Name,
})
cmd.UI.DisplayNewline()
flags, warnings, err := cmd.Actor.GetFeatureFlags()
cmd.UI.DisplayWarnings(warnings)
if err != nil {
return err
}
cmd.displayTable(flags)
return nil
}
func (cmd FeatureFlagsCommand) displayTable(featureFlags []v7action.FeatureFlag) {
if len(featureFlags) > 0 {
var keyValueTable = [][]string{
{"name", "state"},
}
for _, flag := range featureFlags {
state := shared.FlagBoolToString(flag.Enabled)
keyValueTable = append(keyValueTable, []string{flag.Name, state})
}
cmd.UI.DisplayTableWithHeader("", keyValueTable, ui.DefaultTableSpacePadding)
}
}