| darcs | Source code | Contents | Index

Darcs.RepoPath

Contents

AbsolutePath
AbsolutePathOrStd
AbsoluteOrRemotePath
SubPath
Miscellaneous

Description
Various abstractions for dealing with paths.
Synopsis

data AbsolutePath
makeAbsolute :: AbsolutePath -> FilePath -> AbsolutePath
ioAbsolute :: FilePath -> IO AbsolutePath
rootDirectory :: AbsolutePath
data AbsolutePathOrStd
makeAbsoluteOrStd :: AbsolutePath -> String -> AbsolutePathOrStd
ioAbsoluteOrStd :: String -> IO AbsolutePathOrStd
useAbsoluteOrStd :: (AbsolutePath -> IO a) -> IO a -> AbsolutePathOrStd -> IO a
data AbsoluteOrRemotePath
ioAbsoluteOrRemote :: String -> IO AbsoluteOrRemotePath
isRemote :: AbsoluteOrRemotePath -> Bool
data SubPath
makeSubPathOf :: AbsolutePath -> AbsolutePath -> Maybe SubPath
simpleSubPath :: FilePath -> Maybe SubPath
sp2fn :: SubPath -> FileName
class FilePathOrURL a where

toPath :: a -> String

class FilePathOrURL a => FilePathLike a where

toFilePath :: a -> FilePath

getCurrentDirectory :: IO AbsolutePath
setCurrentDirectory :: FilePathLike p => p -> IO ()

AbsolutePath

data AbsolutePath | Source

Instances

Eq AbsolutePath
Ord AbsolutePath
Show AbsolutePath
FilePathLike AbsolutePath
FilePathOrURL AbsolutePath

makeAbsolute :: AbsolutePath -> FilePath -> AbsolutePath | Source

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 AbsolutePath | Source

Interpret a possibly relative path wrt the current working directory.

rootDirectory :: AbsolutePath | Source

The root directory as an absolute path.
AbsolutePathOrStd

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.
Instances

Eq AbsolutePathOrStd
Ord AbsolutePathOrStd
Show AbsolutePathOrStd

makeAbsoluteOrStd :: AbsolutePath -> String -> AbsolutePathOrStd | Source

ioAbsoluteOrStd :: String -> IO AbsolutePathOrStd | Source

useAbsoluteOrStd :: (AbsolutePath -> IO a) -> IO a -> AbsolutePathOrStd -> IO a | Source

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

data AbsoluteOrRemotePath | Source

Instances

Eq AbsoluteOrRemotePath
Ord AbsoluteOrRemotePath
Show AbsoluteOrRemotePath
FilePathOrURL AbsoluteOrRemotePath

ioAbsoluteOrRemote :: String -> IO AbsoluteOrRemotePath | Source

isRemote :: AbsoluteOrRemotePath -> Bool | Source

SubPath

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.
Instances

Eq SubPath
Ord SubPath
Show SubPath
FilePathLike SubPath
FilePathOrURL SubPath

makeSubPathOf :: AbsolutePath -> AbsolutePath -> Maybe SubPath | Source

Make the second path relative to the first, if possible

simpleSubPath :: FilePath -> Maybe SubPath | Source

Miscellaneous

sp2fn :: SubPath -> FileName | Source

class FilePathOrURL a where | Source

Methods

toPath :: a -> String | Source

Instances

FilePathOrURL FileName
FilePathOrURL AbsoluteOrRemotePath
FilePathOrURL AbsolutePath
FilePathOrURL SubPath
CharLike c => FilePathOrURL ([] c)

class FilePathOrURL a => FilePathLike a where | Source

Methods

toFilePath :: a -> FilePath | Source

Instances

FilePathLike FileName
FilePathLike AbsolutePath
FilePathLike SubPath
CharLike c => FilePathLike ([] c)

getCurrentDirectory :: IO AbsolutePath | Source

setCurrentDirectory :: FilePathLike p => p -> IO () | Source

Produced by Haddock version 2.4.2