package autostart import ( "os" "path/filepath" "text/template" ) const jobTemplate = ` Label {{.Name}} ProgramArguments {{range .Exec -}} {{.}} {{end}} RunAtLoad ` var launchDir string func init() { launchDir = filepath.Join(os.Getenv("HOME"), "Library", "LaunchAgents") } func (a *App) path() string { return filepath.Join(launchDir, a.Name+".plist") } // IsEnabled Check is app enabled startup. func (a *App) IsEnabled() bool { _, err := os.Stat(a.path()) return err == nil } // Enable this app on startup. func (a *App) Enable() error { t := template.Must(template.New("job").Parse(jobTemplate)) if err := os.MkdirAll(launchDir, 0777); err != nil { return err } f, err := os.Create(a.path()) if err != nil { return err } defer f.Close() if err := t.Execute(f, a); err != nil { return err } return nil } // Disable this app on startup. func (a *App) Disable() error { return os.Remove(a.path()) }