module Propellor.Property.Group where import Propellor.Base import Propellor.Property.User (hasGroup) type GID = Int exists :: Group -> Maybe GID -> Property UnixLike exists (Group group') mgid = check test (cmdProperty "addgroup" (args mgid)) `describe` unwords ["group", group'] where groupFile = "/etc/group" test = not . elem group' . words <$> readProcess "cut" ["-d:", "-f1", groupFile] args Nothing = [group'] args (Just gid) = ["--gid", show gid, group'] hasUser :: Group -> User -> Property DebianLike hasUser = flip hasGroup