func DoSelfUpdateMac()

in backend/update/selfupdate.go [32:69]


func DoSelfUpdateMac() bool {
	latest, found, _ := selfupdate.DetectLatest("annikovk/IntelliJ-Log-Analyzer")
	if found {
		homeDir, _ := os.UserHomeDir()
		downloadPath := filepath.Join(homeDir, "Downloads", "IntelliJ-Log-Analyzer.zip")
		err := exec.Command("curl", "-L", latest.AssetURL, "-o", downloadPath).Run()
		if err != nil {
			log.Println("curl error:", err)
			return false
		}
		var appPath string
		cmdPath, err := os.Executable()
		appPath = strings.TrimSuffix(cmdPath, "IntelliJ Log Analyzer.app/Contents/MacOS/IntelliJ Log Analyzer")
		if err != nil {
			appPath = "/Applications/"
		}
		cmd := exec.Command("ditto", "-xk", downloadPath, appPath)
		var out bytes.Buffer
		var stderr bytes.Buffer
		cmd.Stdout = &out
		cmd.Stderr = &stderr
		err = cmd.Run()
		if err != nil {
			log.Printf("ditto error: %s\n ouput: %s, error: %s", err, out.String(), stderr.String())
			log.Printf("downloadPath: %s \n appPath %s", downloadPath, appPath)
			return false
		}
		err = exec.Command("rm", downloadPath).Run()
		if err != nil {
			log.Println("removing error:", err)
			log.Printf("downloadPath: %s", downloadPath)
			return false
		}
		return true
	} else {
		return false
	}
}