diff options
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.go | 37 |
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 +} |