github.com/sleungcy/cli@v7.1.0+incompatible/command/v7/feature_flags_command.go (about)

     1  package v7
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/actor/v7action"
     5  	"code.cloudfoundry.org/cli/command/v7/shared"
     6  	"code.cloudfoundry.org/cli/util/ui"
     7  )
     8  
     9  type FeatureFlagsCommand struct {
    10  	BaseCommand
    11  
    12  	usage           interface{} `usage:"CF_NAME feature-flags"`
    13  	relatedCommands interface{} `related_commands:"disable-feature-flag, enable-feature-flag, feature-flag"`
    14  }
    15  
    16  func (cmd FeatureFlagsCommand) Execute(args []string) error {
    17  	err := cmd.SharedActor.CheckTarget(false, false)
    18  	if err != nil {
    19  		return err
    20  	}
    21  
    22  	user, err := cmd.Config.CurrentUser()
    23  	if err != nil {
    24  		return err
    25  	}
    26  
    27  	cmd.UI.DisplayTextWithFlavor("Getting feature flags as {{.Username}}...", map[string]interface{}{
    28  		"Username": user.Name,
    29  	})
    30  	cmd.UI.DisplayNewline()
    31  
    32  	flags, warnings, err := cmd.Actor.GetFeatureFlags()
    33  	cmd.UI.DisplayWarnings(warnings)
    34  	if err != nil {
    35  		return err
    36  	}
    37  
    38  	cmd.displayTable(flags)
    39  
    40  	return nil
    41  }
    42  
    43  func (cmd FeatureFlagsCommand) displayTable(featureFlags []v7action.FeatureFlag) {
    44  	if len(featureFlags) > 0 {
    45  		var keyValueTable = [][]string{
    46  			{"name", "state"},
    47  		}
    48  		for _, flag := range featureFlags {
    49  			state := shared.FlagBoolToString(flag.Enabled)
    50  			keyValueTable = append(keyValueTable, []string{flag.Name, state})
    51  		}
    52  
    53  		cmd.UI.DisplayTableWithHeader("", keyValueTable, ui.DefaultTableSpacePadding)
    54  	}
    55  }