github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/cmd/state-svc/autostart/autostart.go (about) 1 package autostart 2 3 import ( 4 svcApp "github.com/ActiveState/cli/cmd/state-svc/app" 5 "github.com/ActiveState/cli/internal/config" 6 "github.com/ActiveState/cli/internal/constants" 7 "github.com/ActiveState/cli/internal/errs" 8 "github.com/ActiveState/cli/internal/logging" 9 configMediator "github.com/ActiveState/cli/internal/mediators/config" 10 "github.com/ActiveState/cli/internal/multilog" 11 "github.com/ActiveState/cli/internal/osutils/autostart" 12 ) 13 14 var Options = autostart.Options{ 15 Name: constants.SvcAppName, 16 LaunchFileName: constants.SvcLaunchFileName, 17 Args: []string{"start", "--autostart"}, 18 } 19 20 func RegisterConfigListener(cfg *config.Instance) error { 21 app, err := svcApp.New() 22 if err != nil { 23 return errs.Wrap(err, "Could not init app") 24 } 25 26 configMediator.AddListener(constants.AutostartSvcConfigKey, func() { 27 if cfg.GetBool(constants.AutostartSvcConfigKey) { 28 logging.Debug("Enabling autostart") 29 if err := autostart.Enable(app.Path(), Options); err != nil { 30 multilog.Error("Failed to enable autostart: %s", errs.JoinMessage(err)) 31 } 32 } else { 33 logging.Debug("Disabling autostart") 34 if err := autostart.Disable(app.Path(), Options); err != nil { 35 multilog.Error("Failed to disable autostart: %s", errs.JoinMessage(err)) 36 } 37 } 38 }) 39 40 return nil 41 }