diff --git a/main.go b/main.go index c03f425cd1b9866dc417b9613d1e37f0d91e3fe1..073074620a0d4ab326ff4e20abb1137cfd17ce3c 100644 --- a/main.go +++ b/main.go @@ -1562,6 +1562,21 @@ func detectInstalledVersion() string { } } } + + if _, err := exec.LookPath("flatpak"); err == nil { + if out, err := exec.Command("flatpak", "info", "com.floatpane.matcha").Output(); err == nil { + lines := strings.Split(strings.TrimSpace(string(out)), "\n") + for _, line := range lines { + line = strings.TrimSpace(line) + if strings.HasPrefix(line, "Version:") { + fields := strings.Fields(line) + if len(fields) >= 2 { + return fields[1] + } + } + } + } + } } return v @@ -1670,6 +1685,23 @@ func runUpdateCLI() error { // fallthrough } } + // Detect flatpak + if _, err := exec.LookPath("flatpak"); err == nil { + // Check if matcha is installed as a flatpak + cmdCheck := exec.Command("flatpak", "info", "com.floatpane.matcha") + if err := cmdCheck.Run(); err == nil { + fmt.Println("Detected Flatpak package — attempting to update.") + cmd := exec.Command("flatpak", "update", "-y", "com.floatpane.matcha") + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + if err := cmd.Run(); err == nil { + fmt.Println("Successfully updated flatpak.") + return nil + } + fmt.Printf("Flatpak update failed: %v\n", err) + // fallthrough + } + } // Otherwise attempt to download the proper release asset and replace the binary. osName := runtime.GOOS