/* * This function must be implemented by any plugin because it is part of the * plugin interface defined by the core CLI. * * Run(....) is the entry point when the core CLI is invoking a command defined * by a plugin. The first parameter, plugin.CliConnection, is a struct that can * be used to invoke cli commands. The second paramter, args, is a slice of * strings. args[0] will be the name of the command, and will be followed by * any additional arguments a cli user typed in. * * Any error handling should be handled with the plugin itself (this means printing * user facing errors). The CLI will exit 0 if the plugin exits 0 and will exit * 1 should the plugin exits nonzero. */ func (c *DoctorPlugin) Run(cliConnection plugin.CliConnection, args []string) { fmt.Printf("\n\n") var triageApps []string var triageRoutes []string var triageServices []string c.ui = terminal.NewUI(os.Stdin, terminal.NewTeePrinter()) c.ui.Say(terminal.WarningColor("doctor: time to triage cloudfoundry")) fmt.Printf("\n") c.CFMainChecks(cliConnection) listOfRunningApps := c.AppsStateRunning(cliConnection) listOfStoppedApps := c.AppsStateStopped(cliConnection) triageApps = c.CheckUpApps(cliConnection, triageApps, listOfRunningApps, listOfStoppedApps) triageRoutes = c.CheckUpRoutes(cliConnection, triageRoutes) triageServices = c.CheckUpServices(cliConnection, triageServices) if len(triageApps) == 0 && len(triageRoutes) == 0 && len(triageServices) == 0 { c.ui.Say(terminal.SuccessColor("doctor: Everything looks OK!")) return } // doctor run results if len(triageApps) > 0 { c.ui.Say(terminal.WarningColor("Detected triage points for apps: ")) for _, v := range triageApps { c.ui.Say(terminal.LogStderrColor(strings.Split(v, "___")[0]+" <---> ") + terminal.LogStderrColor(strings.Split(v, "___")[1])) } } c.ui.Say(" ") if len(triageRoutes) > 0 { c.ui.Say(terminal.WarningColor("Following routes do not have any app bound to them:")) for _, y := range triageRoutes { c.ui.Say(terminal.LogStderrColor(y)) } } fmt.Printf("\n") if len(triageServices) > 0 { c.ui.Say(terminal.WarningColor("Following services do not have any app bound to them:")) for _, y := range triageServices { c.ui.Say(terminal.LogStderrColor(y)) } } }
func (c *browserUI) Ok() { c.Say(terminal.SuccessColor(T("OK"))) }