HSHHelpers 0.21 → 0.23
raw patch · 2 files changed
+25/−4 lines, 2 filesdep ~MissingHPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: MissingH
API changes (from Hackage documentation)
Files
- HSH/Helpers/UnixUsers.hs +20/−2
- HSHHelpers.cabal +5/−2
HSH/Helpers/UnixUsers.hs view
@@ -3,6 +3,10 @@ -- I don't know how portable this is. -- It works for me, on ubuntu Hardy Heron+{-+Recommend against using this module.+Instead use System.Posix.Users, which I overlooked when writing.+-} import HSH import System.Directory (doesDirectoryExist)@@ -84,7 +88,15 @@ addUserToGroup (SysUser u) (SysGroup g) | null . SU.strip $ u = fail "addUserToGroup: blank user" | null . SU.strip $ g = fail "addUserToGroup: blank group" - | otherwise = tryS $ runIO $ render1 [("u",u),("g",g)] "usermod -G $g$ -a $u$"+ | otherwise = tryS $ do + isU <- isSystemUser . SysUser $ u+ when (not isU) $ fail $ "chown, not a system user: " ++ u+ isG <- isSystemGroup . SysGroup $ g+ when (not isG) $ fail $ "chown, not a system group: " ++ g+ let cmd = render1 [("u",u),("g",g)] "usermod -G $g$ -a $u$"+ putStrLn $ "addUserToGroup, running: " ++ cmd+ runIO $ cmd+ -- need to test this more thoroughly. What happens if we attempt to remove user from primary group? rmUserFromGroup :: SysUser -> SysGroup -> IO ( Either String () )@@ -95,13 +107,19 @@ runIO $ render1 [("u",unsysuser u),("sdMod",sdMod)] "usermod -G $sdMod$ $u$" -chown :: (Maybe SysUser) -> (Maybe SysGroup) -> Recurse -> FilePath -> IO ( Either String () )+chown :: (Maybe SysUser) -> (Maybe SysGroup) -> Recurse -> FilePath -> IO (Either String ()) chown _ _ _ [] = fail "chown, empty path" chown mbUser mbGroup (Recurse recurse) path = tryS $ do let uname = maybe "" unsysuser mbUser grp = maybe "" unsysgroup mbGroup eOwner = getOwner uname grp rFlag = if recurse then "-R" else ""+ when (not . null $ uname) $ do+ isU <- isSystemUser . SysUser $ uname+ when (not isU) $ fail $ "chown, not a system user: " ++ uname+ when (not . null $ grp) $ do+ isG <- isSystemGroup . SysGroup $ grp+ when (not isG) $ fail $ "chown, not a system group: " ++ grp case eOwner of Left msg -> fail msg Right owner -> runIO $ render1 [("owner",owner)
HSHHelpers.cabal view
@@ -1,5 +1,5 @@ Name: HSHHelpers-Version: 0.21+Version: 0.23 License: GPL License-file: gpl.txt Description: @@ -8,6 +8,9 @@ Rather than duplicate code, released on hackage. + A lot of this is cruft. For instance, you are probably better off having a look at System.Posix.Files and+ System.Posix.Users, which I overlooked when writing, before making too much use of hsh helpers. + Synopsis: Convenience functions that use HSH, instances for HSH. Maintainer: Thomas Hartman <thomashartman1 at gmail> Author: Thomas Hartman@@ -15,7 +18,7 @@ Copyright: Copyright (c) 2008 Thomas Hartman Exposed-Modules: HSH.Helpers, HSH.Helpers.Instances, HSH.Helpers.UnixUsers, HSH.Helpers.FileManip, HSH.Helpers.Utils, HSH.Helpers.Email-Build-Depends: base >= 0.4 && <5, HSH >= 1 && <1.27, unix, HStringTemplateHelpers, MissingH >= 1.0, regex-pcre, directory, bytestring, filepath, mtl,+Build-Depends: base >= 0.4 && <5, HSH >= 1 && <1.27, unix, HStringTemplateHelpers, MissingH <= 1.0.3, regex-pcre, directory, bytestring, filepath, mtl, DebugTraceHelpers Category: System Build-type: Simple