diff options
| author | AlexanderCurl <alexc@alexc.hu> | 2026-04-18 17:46:06 +0100 |
|---|---|---|
| committer | AlexanderCurl <alexc@alexc.hu> | 2026-04-18 17:46:06 +0100 |
| commit | 70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69 (patch) | |
| tree | ab1123d4067c1b086dd6faa7ee4ea643236b565a /raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/utils/flatpak.go | |
| parent | 5d94c0a7d44a2255b81815a52a7056a94a39842d (diff) | |
| download | RaveOS-PKGBUILD-70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69.tar.gz RaveOS-PKGBUILD-70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69.zip | |
Replaced file structures for themes in the correct format
Diffstat (limited to 'raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/utils/flatpak.go')
| -rw-r--r-- | raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/utils/flatpak.go | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/utils/flatpak.go b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/utils/flatpak.go new file mode 100644 index 0000000..f1c9009 --- /dev/null +++ b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/utils/flatpak.go @@ -0,0 +1,83 @@ +package utils + +import ( + "bytes" + "errors" + "os/exec" + "slices" + "strings" +) + +func FlatpakInPath() bool { + _, err := exec.LookPath("flatpak") + return err == nil +} + +func FlatpakExists(name string) bool { + if !FlatpakInPath() { + return false + } + + cmd := exec.Command("flatpak", "info", name) + err := cmd.Run() + return err == nil +} + +func FlatpakSearchBySubstring(substring string) bool { + if !FlatpakInPath() { + return false + } + + cmd := exec.Command("flatpak", "list", "--app") + var stdout bytes.Buffer + cmd.Stdout = &stdout + + if err := cmd.Run(); err != nil { + return false + } + + out := stdout.String() + + for line := range strings.SplitSeq(out, "\n") { + fields := strings.Fields(line) + if len(fields) > 1 { + id := fields[1] + idParts := strings.Split(id, ".") + // We are assuming that the last part of the ID is + // the package name we're looking for. This might + // not always be true, some developers use arbitrary + // suffixes. + if len(idParts) > 0 && idParts[len(idParts)-1] == substring { + cmd := exec.Command("flatpak", "info", id) + err := cmd.Run() + return err == nil + } + } + } + return false +} + +func AnyFlatpakExists(flatpaks ...string) bool { + return slices.ContainsFunc(flatpaks, FlatpakExists) +} + +func FlatpakInstallationDir(name string) (string, error) { + if !FlatpakInPath() { + return "", errors.New("flatpak not found in PATH") + } + + cmd := exec.Command("flatpak", "info", "--show-location", name) + var stdout bytes.Buffer + cmd.Stdout = &stdout + + if err := cmd.Run(); err != nil { + return "", errors.New("flatpak not installed: " + name) + } + + location := strings.TrimSpace(stdout.String()) + if location == "" { + return "", errors.New("installation directory not found for: " + name) + } + + return location, nil +} |