darcs-beta- a distributed, interactive, smart revision control system

Safe HaskellSafe-Infered




Various abstractions for dealing with paths.



makeAbsolute :: AbsolutePath -> FilePath -> AbsolutePathSource

Take an absolute path and a string representing a (possibly relative) path and combine them into an absolute path. If the second argument is already absolute, then the first argument gets ignored. This function also takes care that the result is converted to Posix convention and normalized. Also, parent directories ("..") at the front of the string argument get canceled out against trailing directory parts of the absolute path argument.

Regarding the last point, someone more familiar with how these functions are used should verify that this is indeed necessary or at least useful.

ioAbsolute :: FilePath -> IO AbsolutePathSource

Interpret a possibly relative path wrt the current working directory.

rootDirectory :: AbsolutePathSource

The root directory as an absolute path.


data AbsolutePathOrStd Source

This is for situations where a string (e.g. a command line argument) may take the value "-" to mean stdin or stdout (which one depends on context) instead of a normal file path.

useAbsoluteOrStd :: (AbsolutePath -> a) -> a -> AbsolutePathOrStd -> aSource

Execute either the first or the second argument action, depending on whether the given path is an AbsolutePath or stdin/stdout.



data SubPath Source

Paths which are relative to the local darcs repository and normalized. Note: These are understood not to have the dot in front.

makeSubPathOf :: AbsolutePath -> AbsolutePath -> Maybe SubPathSource

Make the second path relative to the first, if possible