stack-1.3.2: The Haskell Tool Stack

Safe Haskell | None
Language | Haskell2010

Path.Extra

Description

Extra Path utilities.

Synopsis

- toFilePathNoTrailingSep :: Path loc Dir -> FilePath
- dropRoot :: Path Abs t -> Path Rel t
- parseCollapsedAbsDir :: MonadThrow m => FilePath -> m (Path Abs Dir)
- parseCollapsedAbsFile :: MonadThrow m => FilePath -> m (Path Abs File)
- rejectMissingFile :: MonadIO m => Maybe (Path Abs File) -> m (Maybe (Path Abs File))
- rejectMissingDir :: MonadIO m => Maybe (Path Abs Dir) -> m (Maybe (Path Abs Dir))
- pathToByteString :: Path b t -> ByteString
- pathToLazyByteString :: Path b t -> ByteString
- pathToText :: Path b t -> Text

# Documentation

toFilePathNoTrailingSep :: Path loc Dir -> FilePath #

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

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

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

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

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) #

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)) #

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

rejectMissingDir :: MonadIO m => Maybe (Path Abs Dir) -> m (Maybe (Path Abs Dir)) #

See `rejectMissingFile`.

pathToByteString :: Path b t -> ByteString #

Convert to a ByteString using toFilePath and UTF8.

pathToLazyByteString :: Path b t -> ByteString #

Convert to a lazy ByteString using toFilePath and UTF8.

pathToText :: Path b t -> Text #