//go:build darwin package watcher import ( "fmt" "os" "os/exec" "path/filepath" ) func installAutostart() error { exe, err := os.Executable() if err != nil { return err } exe, err = filepath.EvalSymlinks(exe) if err != nil { return err } plist := fmt.Sprintf(` Label com.godeez.watch ProgramArguments %s watch run RunAtLoad KeepAlive `, exe) path := filepath.Join(os.Getenv("HOME"), "Library", "LaunchAgents", "com.godeez.watch.plist") if err := os.WriteFile(path, []byte(plist), 0644); err != nil { return err } return exec.Command("launchctl", "load", path).Run() }