func initService(daemonCli *DaemonCli) (bool, error) { if *flUnregisterService { if *flRegisterService { return true, errors.New("--register-service and --unregister-service cannot be used together") } return true, unregisterService() } if *flRegisterService { return true, registerService() } if !*flRunService { return false, nil } interactive, err := svc.IsAnInteractiveSession() if err != nil { return false, err } h := &handler{ tosvc: make(chan bool), fromsvc: make(chan error), daemonCli: daemonCli, } var log *eventlog.Log if !interactive { log, err = eventlog.Open(*flServiceName) if err != nil { return false, err } } logrus.AddHook(&etwHook{log}) logrus.SetOutput(ioutil.Discard) service = h go func() { if interactive { err = debug.Run(*flServiceName, h) } else { err = svc.Run(*flServiceName, h) } h.fromsvc <- err }() // Wait for the first signal from the service handler. err = <-h.fromsvc if err != nil { return false, err } return false, nil }
func runService(context *cli.Context) error { interactive, err := svc.IsAnInteractiveSession() if err != nil { return fmt.Errorf("Failed to detect interactive session: %s", err) } s := service{context, interactive} if interactive { return debug.Run(lib.ConnectorName, &s) } else { return svc.Run(lib.ConnectorName, &s) } }
func RunService(context *cli.Context) { interactive, err := svc.IsAnInteractiveSession() if err != nil { fmt.Fprintf(os.Stderr, "Failed to detect interactive session: %s\n", err) os.Exit(1) } s := service{context, interactive} if interactive { debug.Run(lib.ConnectorName, &s) } else { svc.Run(lib.ConnectorName, &s) } }