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

     1  package v7
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/actor/v7action"
     5  	"code.cloudfoundry.org/cli/command/flag"
     6  )
     7  
     8  type StackCommand struct {
     9  	BaseCommand
    10  
    11  	RequiredArgs    flag.StackName `positional-args:"yes"`
    12  	GUID            bool           `long:"guid" description:"Retrieve and display the given stack's guid. All other output for the stack is suppressed."`
    13  	usage           interface{}    `usage:"CF_NAME stack STACK_NAME"`
    14  	relatedCommands interface{}    `related_commands:"app, push, stacks"`
    15  }
    16  
    17  func (cmd *StackCommand) Execute(args []string) error {
    18  	err := cmd.SharedActor.CheckTarget(false, false)
    19  	if err != nil {
    20  		return err
    21  	}
    22  
    23  	if cmd.GUID {
    24  		return cmd.displayStackGUID()
    25  	}
    26  
    27  	return cmd.displayStackInfo()
    28  }
    29  
    30  func (cmd *StackCommand) getStack(stackName string) (v7action.Stack, error) {
    31  	stack, warnings, err := cmd.Actor.GetStackByName(cmd.RequiredArgs.StackName)
    32  	cmd.UI.DisplayWarnings(warnings)
    33  	return stack, err
    34  }
    35  
    36  func (cmd *StackCommand) displayStackGUID() error {
    37  	stack, err := cmd.getStack(cmd.RequiredArgs.StackName)
    38  	if err != nil {
    39  		return err
    40  	}
    41  
    42  	cmd.UI.DisplayText(stack.GUID)
    43  	return nil
    44  }
    45  
    46  func (cmd *StackCommand) displayStackInfo() error {
    47  	user, err := cmd.Config.CurrentUser()
    48  	if err != nil {
    49  		return err
    50  	}
    51  
    52  	cmd.UI.DisplayTextWithFlavor("Getting info for stack {{.StackName}} as {{.Username}}...", map[string]interface{}{
    53  		"StackName": cmd.RequiredArgs.StackName,
    54  		"Username":  user.Name,
    55  	})
    56  	cmd.UI.DisplayNewline()
    57  
    58  	stack, err := cmd.getStack(cmd.RequiredArgs.StackName)
    59  	if err != nil {
    60  		return err
    61  	}
    62  
    63  	cmd.UI.DisplayKeyValueTable("", [][]string{
    64  		{cmd.UI.TranslateText("name:"), stack.Name},
    65  		{cmd.UI.TranslateText("description:"), stack.Description},
    66  	}, 3)
    67  	return nil
    68  }