stack-1.2.0: The Haskell Tool Stack

Safe HaskellNone
LanguageHaskell2010

Path.Extra

Description

Extra Path utilities.

Synopsis

Documentation

toFilePathNoTrailingSep :: Path loc Dir -> FilePath Source

Convert to FilePath but don't add a trailing slash.

dropRoot :: Path Abs t -> Path Rel t Source

Drop the root (either / on POSIX or C:\, D:\, etc. on Windows).

parseCollapsedAbsDir :: MonadThrow m => FilePath -> m (Path Abs Dir) Source

Collapse intermediate "." and ".." directories from path, then parse it with parseAbsDir. (probably should be moved to the Path module)

parseCollapsedAbsFile :: MonadThrow m => FilePath -> m (Path Abs File) Source

Collapse intermediate "." and ".." directories from path, then parse it with parseAbsFile. (probably should be moved to the Path module)

rejectMissingFile :: MonadIO m => Maybe (Path Abs File) -> m (Maybe (Path Abs File)) Source

If given file in Maybe does not exist, ensure we have Nothing. This is to be used in conjunction with forgivingAbsence and resolveFile.

Previously the idiom forgivingAbsence (relsoveFile …) alone was used, which relied on canonicalizePath throwing isDoesNotExistError when path does not exist. As it turns out, this behavior is actually not intentional and unreliable, see https://github.com/haskell/directory/issues/44. This was “fixed” in version 1.2.3.0 of directory package (now it never throws). To make it work with all versions, we need to use the following idiom:

forgivingAbsence (resolveFile …) >>= rejectMissingFile

pathToByteString :: Path b t -> ByteString Source

Convert to a ByteString using toFilePath and UTF8.

pathToLazyByteString :: Path b t -> ByteString Source

Convert to a lazy ByteString using toFilePath and UTF8.