summaryrefslogtreecommitdiff
path: root/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/utils/group.go
diff options
context:
space:
mode:
Diffstat (limited to 'raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/utils/group.go')
-rw-r--r--raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/utils/group.go37
1 files changed, 37 insertions, 0 deletions
diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/utils/group.go b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/utils/group.go
new file mode 100644
index 0000000..1a0a950
--- /dev/null
+++ b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/utils/group.go
@@ -0,0 +1,37 @@
+package utils
+
+import (
+ "os"
+ "strings"
+)
+
+func HasGroup(groupName string) bool {
+ return HasGroupIn(groupName, "/etc/group")
+}
+
+func HasGroupIn(groupName, path string) bool {
+ data, err := os.ReadFile(path)
+ if err != nil {
+ return false
+ }
+ return HasGroupData(groupName, string(data))
+}
+
+func HasGroupData(groupName, data string) bool {
+ prefix := groupName + ":"
+ for line := range strings.SplitSeq(data, "\n") {
+ if strings.HasPrefix(line, prefix) {
+ return true
+ }
+ }
+ return false
+}
+
+func FindGroupData(data string, candidates ...string) (string, bool) {
+ for _, candidate := range candidates {
+ if HasGroupData(candidate, data) {
+ return candidate, true
+ }
+ }
+ return "", false
+}