Karya, built on 2018-05-31T02:46:59 (patch 0a1a35479c514820d77330ae8a978975ba22a47a)

Safe HaskellNone




Do things with files.



readGz :: IO.FilePath -> IO.IO (Either String ByteString.ByteString) Source #

Read and decompress a gzipped file.

writeGz Source #


:: Maybe IO.FilePath

If Just, and the file was written, move any old file to fn++suffix.

-> IO.FilePath 
-> ByteString.ByteString 
-> IO.IO Bool

False if the file wasn't written because it wouldn't have changed.

Write a gzipped file. Try to do so atomically by writing to a tmp file first and renaming it.

Like mv, this will refuse to overwrite a file if it isn't writable.

requireWritable :: IO.FilePath -> IO.IO () Source #

Throw if this file exists but isn't writable.

writable :: IO.FilePath -> IO.IO Bool Source #

True if the file doesn't exist, or if it does but is writable.

list :: IO.FilePath -> IO.IO [IO.FilePath] Source #

Like Directory.getDirectoryContents except don't return dotfiles and it prepends the directory.

rmDirRecursive :: IO.FilePath -> IO.IO () Source #

recursiveRemoveDirectory crashes if the dir doesn't exist, and follows symlinks.

IO errors

ignoreEnoent :: IO.IO a -> IO.IO (Maybe a) Source #

If op raised ENOENT, return Nothing.

ignoreIOError :: IO.IO a -> IO.IO (Maybe a) Source #

Ignore all IO errors. This is useful when you want to see if a file exists, because some-file/x will not give ENOENT, but ENOTDIR, which is probably isIllegalOperation.

ignoreError :: Exception e => (e -> Bool) -> IO.IO a -> IO.IO (Maybe a) Source #

tryIO :: IO.IO a -> IO.IO (Either IO.Error.IOError a) Source #

try specialized to IOError.