func ListServices(g *libkb.GlobalContext) (*keybase1.ServicesStatus, error) { services, err := launchd.ListServices([]string{"keybase.service", "homebrew.mxcl.keybase"}) if err != nil { return nil, err } kbfs, err := launchd.ListServices([]string{"keybase.kbfs.", "homebrew.mxcl.kbfs"}) if err != nil { return nil, err } return &keybase1.ServicesStatus{ Service: serviceStatusesFromLaunchd(g, services), Kbfs: serviceStatusesFromLaunchd(g, kbfs)}, nil }
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 DiagnoseSocketError(err error) { services, err := launchd.ListServices("keybase.") if err != nil { GlobUI.Printf("Error checking launchd services: %v\n\n", err) return } if len(services) == 0 { GlobUI.Println("\nThere are no Keybase services installed. You may need to re-install.") } else if len(services) > 1 { GlobUI.Println("\nWe found multiple services:") for _, service := range services { GlobUI.Println(" " + service.StatusDescription()) } GlobUI.Println("") } else if len(services) == 1 { service := services[0] status, err := service.Status() if err != nil { G.Log.Errorf("Error checking service status(%s): %v\n\n", service.Label(), err) } else { if status == nil || !status.IsRunning() { GlobUI.Printf("\nWe found a Keybase service (%s) but it's not running.\n", service.Label()) cmd := fmt.Sprintf("keybase launchd start %s", service.Label()) GlobUI.Println("You might try starting it: " + cmd + "\n") } else { GlobUI.Printf("\nWe couldn't connect but there is a Keybase service (%s) running (%s).\n", status.Label(), status.Pid()) cmd := fmt.Sprintf("keybase launchd restart %s", service.Label()) GlobUI.Println("You might try restarting it: " + cmd + "\n") } } } }
// ListServices returns status for all services func ListServices(context Context, wait time.Duration, log Log) (*keybase1.ServicesStatus, error) { services, err := launchd.ListServices([]string{"keybase.service", "homebrew.mxcl.keybase"}) if err != nil { return nil, err } kbfs, err := launchd.ListServices([]string{"keybase.kbfs.", "homebrew.mxcl.kbfs"}) if err != nil { return nil, err } updater, err := launchd.ListServices([]string{"keybase.updater."}) if err != nil { return nil, err } return &keybase1.ServicesStatus{ Service: serviceStatusesFromLaunchd(context, services, wait, log), Kbfs: serviceStatusesFromLaunchd(context, kbfs, wait, log), Updater: serviceStatusesFromLaunchd(context, updater, wait, log), }, nil }
func (v *CmdLaunchdList) showServices(filters []string, name string) (err error) { services, err := launchd.ListServices(filters) if err != nil { return } ui := v.G().UI.GetTerminalUI() if len(services) > 0 { for _, service := range services { ui.Printf("%s [%s]\n", service.StatusDescription(), name) } } else { ui.Printf("No %s services.\n", name) } return }