github.com/loafoe/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 }