shake-0.15.11: Build system library, like Make, but more accurate dependencies.

Safe HaskellSafe



A module for FilePath operations exposing System.FilePath plus some additional operations.

Windows note: The extension methods (<.>, takeExtension etc) use the Posix variants since on Windows "//*" <.> "txt" produces "//*\\.txt" (which is bad for FilePattern values).



dropDirectory1 :: FilePath -> FilePath Source

Drop the first directory from a FilePath. Should only be used on relative paths.

dropDirectory1 "aaa/bbb" == "bbb"
dropDirectory1 "aaa/" == ""
dropDirectory1 "aaa" == ""
dropDirectory1 "" == ""

takeDirectory1 :: FilePath -> FilePath Source

Take the first component of a FilePath. Should only be used on relative paths.

takeDirectory1 "aaa/bbb" == "aaa"
takeDirectory1 "aaa/" == "aaa"
takeDirectory1 "aaa" == "aaa"

normaliseEx :: FilePath -> FilePath Source

Normalise a FilePath, applying the rules:

  • All pathSeparators become pathSeparator (/ on Linux, \ on Windows)
  • foo/bar/../baz becomes foo/baz (not universally true in the presence of symlinks)
  • foo/./bar becomes foo/bar
  • foo//bar becomes foo/bar

This function is not based on the normalise function from the filepath library, as that function is quite broken.

toNative :: FilePath -> FilePath Source

Convert to native path separators, namely \ on Windows.

toStandard :: FilePath -> FilePath Source

Convert all path separators to /, even on Windows.

exe :: String Source

The extension of executables, "exe" on Windows and "" otherwise.