mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-04-04 12:52:06 -04:00
* greeter: Detect user and group used by greetd On most distros greetd runs as user and group "greeter", but on Debian the user and group "_greetd" are used. * greeter: Use correct group in sync command * greeter: more generic group detection --------- Co-authored-by: bbedward <bbedward@gmail.com>
38 lines
698 B
Go
38 lines
698 B
Go
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
|
|
}
|