github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+incompatible/command/v6/orgs_command.go (about)

     1  package v6
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/actor/sharedaction"
     5  	"code.cloudfoundry.org/cli/actor/v2action"
     6  	"code.cloudfoundry.org/cli/command"
     7  	"code.cloudfoundry.org/cli/command/v6/shared"
     8  	"code.cloudfoundry.org/cli/util/ui"
     9  )
    10  
    11  //go:generate counterfeiter . OrgsActor
    12  
    13  type OrgsActor interface {
    14  	GetOrganizations() ([]v2action.Organization, v2action.Warnings, error)
    15  }
    16  
    17  type OrgsCommand struct {
    18  	usage interface{} `usage:"CF_NAME orgs"`
    19  
    20  	UI          command.UI
    21  	Config      command.Config
    22  	SharedActor command.SharedActor
    23  	Actor       OrgsActor
    24  }
    25  
    26  func (cmd *OrgsCommand) Setup(config command.Config, ui command.UI) error {
    27  	cmd.Config = config
    28  	cmd.UI = ui
    29  	cmd.SharedActor = sharedaction.NewActor(config)
    30  
    31  	ccClient, _, err := shared.GetNewClientsAndConnectToCF(config, ui)
    32  	if err != nil {
    33  		return err
    34  	}
    35  	cmd.Actor = v2action.NewActor(ccClient, nil, config)
    36  
    37  	return nil
    38  }
    39  
    40  func (cmd OrgsCommand) Execute(args []string) error {
    41  	err := cmd.SharedActor.CheckTarget(false, false)
    42  	if err != nil {
    43  		return err
    44  	}
    45  
    46  	user, err := cmd.Config.CurrentUser()
    47  	if err != nil {
    48  		return err
    49  	}
    50  
    51  	cmd.UI.DisplayTextWithFlavor("Getting orgs as {{.CurrentUser}}...", map[string]interface{}{
    52  		"CurrentUser": user.Name,
    53  	})
    54  	cmd.UI.DisplayNewline()
    55  
    56  	orgs, warnings, err := cmd.Actor.GetOrganizations()
    57  	cmd.UI.DisplayWarnings(warnings)
    58  	if err != nil {
    59  		return err
    60  	}
    61  
    62  	if len(orgs) == 0 {
    63  		cmd.UI.DisplayText("No orgs found.")
    64  	} else {
    65  		cmd.displayOrgs(orgs)
    66  	}
    67  
    68  	return nil
    69  }
    70  
    71  func (cmd OrgsCommand) displayOrgs(orgs []v2action.Organization) {
    72  	table := [][]string{{cmd.UI.TranslateText("name")}}
    73  	for _, org := range orgs {
    74  		table = append(table, []string{org.Name})
    75  	}
    76  	cmd.UI.DisplayTableWithHeader("", table, ui.DefaultTableSpacePadding)
    77  }