38 lines
632 B
Go
38 lines
632 B
Go
package watcher
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"runtime"
|
|
"strings"
|
|
)
|
|
|
|
func EnsureAutostart(homeDir string) error {
|
|
if isAutostartInstalled(homeDir) || isTemporaryExecutable() {
|
|
return nil
|
|
}
|
|
|
|
return installAutostart(homeDir)
|
|
}
|
|
|
|
func isAutostartInstalled(homeDir string) bool {
|
|
switch runtime.GOOS {
|
|
case "darwin":
|
|
path := filepath.Join(homeDir, "Library", "LaunchAgents", "com.godeez.watch.plist")
|
|
_, err := os.Stat(path)
|
|
|
|
return err == nil
|
|
default:
|
|
return false
|
|
}
|
|
}
|
|
|
|
func isTemporaryExecutable() bool {
|
|
exe, err := os.Executable()
|
|
if err != nil {
|
|
return true
|
|
}
|
|
|
|
return strings.Contains(exe, "go-build")
|
|
}
|