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  }