github.com/dcarley/cf-cli@v6.24.1-0.20170220111324-4225ff346898+incompatible/command/v2/app_command.go (about) 1 package v2 2 3 import ( 4 "os" 5 6 "code.cloudfoundry.org/cli/actor/sharedaction" 7 "code.cloudfoundry.org/cli/actor/v2action" 8 oldCmd "code.cloudfoundry.org/cli/cf/cmd" 9 "code.cloudfoundry.org/cli/command" 10 "code.cloudfoundry.org/cli/command/flag" 11 "code.cloudfoundry.org/cli/command/v2/shared" 12 ) 13 14 //go:generate counterfeiter . AppActor 15 16 type AppActor interface { 17 GetApplicationByNameAndSpace(name string, spaceGUID string) (v2action.Application, v2action.Warnings, error) 18 GetApplicationSummaryByNameAndSpace(name string, spaceGUID string) (v2action.ApplicationSummary, v2action.Warnings, error) 19 } 20 21 type AppCommand struct { 22 RequiredArgs flag.AppName `positional-args:"yes"` 23 GUID bool `long:"guid" description:"Retrieve and display the given app's guid. All other health and status output for the app is suppressed."` 24 usage interface{} `usage:"CF_NAME app APP_NAME"` 25 relatedCommands interface{} `related_commands:"apps, events, logs, map-route, unmap-route, push"` 26 27 UI command.UI 28 Config command.Config 29 SharedActor command.SharedActor 30 Actor AppActor 31 } 32 33 func (cmd *AppCommand) Setup(config command.Config, ui command.UI) error { 34 cmd.UI = ui 35 cmd.Config = config 36 cmd.SharedActor = sharedaction.NewActor() 37 38 ccClient, uaaClient, err := shared.NewClients(config, ui) 39 if err != nil { 40 return err 41 } 42 cmd.Actor = v2action.NewActor(ccClient, uaaClient) 43 44 return nil 45 } 46 47 func (cmd AppCommand) Execute(args []string) error { 48 if cmd.Config.Experimental() == false { 49 oldCmd.Main(os.Getenv("CF_TRACE"), os.Args) 50 return nil 51 } 52 53 cmd.UI.DisplayText(command.ExperimentalWarning) 54 cmd.UI.DisplayNewline() 55 56 err := cmd.SharedActor.CheckTarget(cmd.Config, true, true) 57 if err != nil { 58 return shared.HandleError(err) 59 } 60 61 if cmd.GUID { 62 return cmd.displayAppGUID() 63 } 64 65 return cmd.displayAppSummary() 66 } 67 68 func (cmd AppCommand) displayAppGUID() error { 69 app, warnings, err := cmd.Actor.GetApplicationByNameAndSpace(cmd.RequiredArgs.AppName, cmd.Config.TargetedSpace().GUID) 70 cmd.UI.DisplayWarnings(warnings) 71 if err != nil { 72 return shared.HandleError(err) 73 } 74 75 cmd.UI.DisplayText(app.GUID) 76 return nil 77 } 78 79 func (cmd AppCommand) displayAppSummary() error { 80 user, err := cmd.Config.CurrentUser() 81 if err != nil { 82 return shared.HandleError(err) 83 } 84 85 cmd.UI.DisplayTextWithFlavor( 86 "Showing health and status for app {{.AppName}} in org {{.OrgName}} / space {{.SpaceName}} as {{.Username}}...", 87 map[string]interface{}{ 88 "AppName": cmd.RequiredArgs.AppName, 89 "OrgName": cmd.Config.TargetedOrganization().Name, 90 "SpaceName": cmd.Config.TargetedSpace().Name, 91 "Username": user.Name, 92 }) 93 cmd.UI.DisplayNewline() 94 95 appSummary, warnings, err := cmd.Actor.GetApplicationSummaryByNameAndSpace(cmd.RequiredArgs.AppName, cmd.Config.TargetedSpace().GUID) 96 cmd.UI.DisplayWarnings(warnings) 97 if err != nil { 98 return shared.HandleError(err) 99 } 100 101 shared.DisplayAppSummary(cmd.UI, appSummary, false) 102 103 return nil 104 }