Karya, built on 2023-05-20T22:46:53 (patch a9dfbbbd8573ce136f4a2da0fe96ddeda3605dee)
Safe HaskellSafe-Inferred

Util.File

Description

Do things with files.

Synopsis

read/write

symlink :: String -> IO.FilePath -> IO.IO () Source #

Make a symlink atomically.

query

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

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

directory

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

Like Directory.listDirectory except prepend the directory.

walk :: (IO.FilePath -> Bool) -> IO.FilePath -> Stream (Of (IO.FilePath, [IO.FilePath])) IO.IO () Source #

Walk the filesystem and stream (dir, fname).

compression

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

Read and decompress a gzipped file.

writeGz Source #

Arguments

:: Int

save this many previous versions of the file

-> 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. If the file wouldn't have changed, abort the write and delete the tmp file. The mtime won't change, and the caller gets a False, which can be used to avoid rebuilds.