func DiagnoseSocketError(ui libkb.UI, err error) { t := ui.GetTerminalUI() services, err := launchd.ListServices([]string{"keybase.service.", "homebrew.mxcl.keybase"}) if err != nil { t.Printf("Error checking launchd services: %v\n\n", err) return } if len(services) == 0 { t.Printf("\nThere are no Keybase services installed, you might try running: keybase install\n\n") } else if len(services) > 1 { t.Printf("\nWe found multiple services:\n") for _, service := range services { t.Printf(" " + service.StatusDescription() + "\n") } t.Printf("\n") } else if len(services) == 1 { service := services[0] status, err := service.LoadStatus() if err != nil { t.Printf("Error checking service status(%s): %v\n\n", service.Label(), err) } else { if status == nil || !status.IsRunning() { t.Printf("\nWe found a Keybase service (%s) but it's not running.\n", service.Label()) cmd := fmt.Sprintf("keybase launchd start %s", service.Label()) t.Printf("You might try starting it: " + cmd + "\n\n") } else { t.Printf("\nWe couldn't connect but there is a Keybase service (%s) running (%s).\n\n", status.Label(), status.Pid()) cmd := fmt.Sprintf("keybase launchd restart %s", service.Label()) t.Printf("You might try restarting it: " + cmd + "\n\n") } } } }
func outputComponentResults(ui libkb.UI, action string, crs []keybase1.ComponentResult) { term := ui.GetTerminalUI() for _, cr := range crs { cn := install.ComponentNameFromString(cr.Name) term.Printf("%s %s: %s\n", action, cn.String(), cr.Status.Desc) } }