Remove unnecessary Permissions
type synonym
This commit is contained in:
parent
0628598dd8
commit
563ad23499
1 changed files with 27 additions and 28 deletions
|
@ -136,13 +136,13 @@ module Turtle.Prelude (
|
||||||
, (.||.)
|
, (.||.)
|
||||||
|
|
||||||
-- * Permissions
|
-- * Permissions
|
||||||
|
, Directory.Permissions
|
||||||
, chmod
|
, chmod
|
||||||
, Permissions
|
|
||||||
, readable, nonreadable
|
, readable, nonreadable
|
||||||
, writable, nonwritable
|
, writable, nonwritable
|
||||||
, executable, nonexecutable
|
, executable, nonexecutable
|
||||||
, searchable, nonsearchable
|
, searchable, nonsearchable
|
||||||
, ooo,roo,owo,oox,oos,rwo,rox,ros,owx,rwx,rws
|
, ooo, roo, owo, oox, oos, rwo, rox, ros, owx, rwx, rws
|
||||||
|
|
||||||
-- * Managed
|
-- * Managed
|
||||||
, readonly
|
, readonly
|
||||||
|
@ -204,11 +204,7 @@ import System.Environment (
|
||||||
lookupEnv,
|
lookupEnv,
|
||||||
#endif
|
#endif
|
||||||
getEnvironment )
|
getEnvironment )
|
||||||
import qualified System.Directory as Filesystem
|
import qualified System.Directory as Directory
|
||||||
( Permissions, getPermissions, setPermissions, emptyPermissions
|
|
||||||
, setOwnerReadable, setOwnerWritable
|
|
||||||
, setOwnerExecutable, setOwnerSearchable
|
|
||||||
, readable )
|
|
||||||
import System.Exit (ExitCode(..), exitWith)
|
import System.Exit (ExitCode(..), exitWith)
|
||||||
import System.IO (Handle)
|
import System.IO (Handle)
|
||||||
import qualified System.IO as IO
|
import qualified System.IO as IO
|
||||||
|
@ -459,8 +455,8 @@ ls path = Shell (\(FoldM step begin done) -> do
|
||||||
x0 <- begin
|
x0 <- begin
|
||||||
let path' = Filesystem.encodeString path
|
let path' = Filesystem.encodeString path
|
||||||
canRead <- fmap
|
canRead <- fmap
|
||||||
Filesystem.readable
|
Directory.readable
|
||||||
(Filesystem.getPermissions (deslash path'))
|
(Directory.getPermissions (deslash path'))
|
||||||
#ifdef mingw32_HOST_OS
|
#ifdef mingw32_HOST_OS
|
||||||
reparse <- fmap reparsePoint (Win32.getFileAttributes path')
|
reparse <- fmap reparsePoint (Win32.getFileAttributes path')
|
||||||
if (canRead && not reparse)
|
if (canRead && not reparse)
|
||||||
|
@ -590,38 +586,41 @@ touch file = do
|
||||||
#endif
|
#endif
|
||||||
else output file empty )
|
else output file empty )
|
||||||
|
|
||||||
type Permissions = Filesystem.Permissions -> Filesystem.Permissions
|
|
||||||
|
|
||||||
{-| Update a file or directory's permissions
|
{-| Update a file or directory's permissions
|
||||||
|
|
||||||
> chmod rwo "foo.txt" -- chmod u=rw foo.txt
|
> chmod rwo "foo.txt" -- chmod u=rw foo.txt
|
||||||
> chmod executable "foo.txt" -- chmod u+x foo.txt
|
> chmod executable "foo.txt" -- chmod u+x foo.txt
|
||||||
> chmod nonwritable "foo.txt" -- chmod u-x foo.txt
|
> chmod nonwritable "foo.txt" -- chmod u-x foo.txt
|
||||||
-}
|
-}
|
||||||
chmod :: MonadIO io => Permissions -> FilePath -> io ()
|
chmod
|
||||||
|
:: MonadIO io
|
||||||
|
=> (Directory.Permissions -> Directory.Permissions)
|
||||||
|
-> FilePath
|
||||||
|
-> io ()
|
||||||
chmod modifyPermissions path = liftIO (do
|
chmod modifyPermissions path = liftIO (do
|
||||||
let path' = deslash (Filesystem.encodeString path)
|
let path' = deslash (Filesystem.encodeString path)
|
||||||
permissions <- Filesystem.getPermissions path'
|
permissions <- Directory.getPermissions path'
|
||||||
Filesystem.setPermissions path' (modifyPermissions permissions) )
|
Directory.setPermissions path' (modifyPermissions permissions) )
|
||||||
|
|
||||||
readable, nonreadable :: Permissions
|
readable, nonreadable :: Directory.Permissions -> Directory.Permissions
|
||||||
readable = Filesystem.setOwnerReadable True
|
readable = Directory.setOwnerReadable True
|
||||||
nonreadable = Filesystem.setOwnerReadable False
|
nonreadable = Directory.setOwnerReadable False
|
||||||
|
|
||||||
writable, nonwritable :: Permissions
|
writable, nonwritable :: Directory.Permissions -> Directory.Permissions
|
||||||
writable = Filesystem.setOwnerWritable True
|
writable = Directory.setOwnerWritable True
|
||||||
nonwritable = Filesystem.setOwnerWritable False
|
nonwritable = Directory.setOwnerWritable False
|
||||||
|
|
||||||
executable, nonexecutable :: Permissions
|
executable, nonexecutable :: Directory.Permissions -> Directory.Permissions
|
||||||
executable = Filesystem.setOwnerExecutable True
|
executable = Directory.setOwnerExecutable True
|
||||||
nonexecutable = Filesystem.setOwnerExecutable False
|
nonexecutable = Directory.setOwnerExecutable False
|
||||||
|
|
||||||
searchable, nonsearchable :: Permissions
|
searchable, nonsearchable :: Directory.Permissions -> Directory.Permissions
|
||||||
searchable = Filesystem.setOwnerSearchable True
|
searchable = Directory.setOwnerSearchable True
|
||||||
nonsearchable = Filesystem.setOwnerSearchable False
|
nonsearchable = Directory.setOwnerSearchable False
|
||||||
|
|
||||||
ooo,roo,owo,oox,oos,rwo,rox,ros,owx,rwx,rws :: Permissions
|
ooo, roo, owo, oox, oos, rwo, rox, ros, owx, rwx, rws
|
||||||
ooo = const Filesystem.emptyPermissions
|
:: Directory.Permissions -> Directory.Permissions
|
||||||
|
ooo = const Directory.emptyPermissions
|
||||||
roo = readable . ooo
|
roo = readable . ooo
|
||||||
owo = writable . ooo
|
owo = writable . ooo
|
||||||
oox = executable . ooo
|
oox = executable . ooo
|
||||||
|
|
Loading…
Reference in a new issue