packages feed

filepather-0.4.1: src/System/FilePath/FilePather/Directory.hs

{-# OPTIONS_GHC -Wall #-}
{-# LANGUAGE NoImplicitPrelude #-}

module System.FilePath.FilePather.Directory(
  createDirectory
, createDirectoryIfMissing
, removeDirectory
, removeDirectoryRecursive
, removePathForcibly
, renameDirectory
, listDirectory
, getDirectoryContents
, withCurrentDirectory
, getXdgDirectory
, getAppUserDataDirectory
, removeFile
, renameFile
, renamePath
, copyFile
, copyFileWithMetadata
, getFileSize
, canonicalizePath
, makeAbsolute
, makeRelativeToCurrentDirectory
, doesPathExist
, doesFileExist
, doesDirectoryExist
, findExecutable
, findExecutables
, findExecutablesInDirectories
, findFile
, findFiles
, findFileWith
, findFilesWith
, createFileLink
, createDirectoryLink
, removeDirectoryLink
, pathIsSymbolicLink
, getSymbolicLinkTarget
, getPermissions
, setPermissions
, copyPermissions
, getAccessTime
, getModificationTime
, setAccessTime
, setModificationTime
, module SD
) where

import Control.Category ( Category((.)) )
import Control.Lens ( over, _Wrapped )
import Data.Maybe ( Maybe )
import Data.Bool ( Bool )
import Data.Time ( UTCTime )
import GHC.Num( Integer )
import qualified System.Directory as D
import System.Directory as SD(getCurrentDirectory, getHomeDirectory, XdgDirectory(..), XdgDirectoryList(..), getXdgDirectoryList, getUserDocumentsDirectory, getTemporaryDirectory, exeExtension, Permissions(..), emptyPermissions, readable, writable, executable, searchable, setOwnerReadable, setOwnerWritable, setOwnerExecutable, setOwnerSearchable)
import System.FilePath.FilePather.ReadFilePath
    ( ReadFilePathT(..) )
import System.FilePath ( FilePath )
import System.IO ( IO )

createDirectory ::
  ReadFilePathT IO ()
createDirectory =
  ReadFilePathT D.createDirectory

createDirectoryIfMissing ::
  Bool
  -> ReadFilePathT IO ()
createDirectoryIfMissing =
  ReadFilePathT . D.createDirectoryIfMissing

removeDirectory ::
  ReadFilePathT IO ()
removeDirectory =
  ReadFilePathT D.removeDirectory

removeDirectoryRecursive ::
  ReadFilePathT IO ()
removeDirectoryRecursive =
  ReadFilePathT D.removeDirectoryRecursive

removePathForcibly ::
  ReadFilePathT IO ()
removePathForcibly =
  ReadFilePathT D.removePathForcibly

renameDirectory ::
  FilePath
  -> ReadFilePathT IO ()
renameDirectory =
  ReadFilePathT . D.renameDirectory

listDirectory ::
  ReadFilePathT IO [FilePath]
listDirectory =
  ReadFilePathT D.listDirectory

getDirectoryContents ::
  ReadFilePathT IO [FilePath]
getDirectoryContents =
  ReadFilePathT D.listDirectory

withCurrentDirectory ::
  IO a
  -> ReadFilePathT IO a
withCurrentDirectory io =
  ReadFilePathT (`D.withCurrentDirectory` io)

getXdgDirectory ::
  XdgDirectory
  -> ReadFilePathT IO FilePath
getXdgDirectory xdg =
  ReadFilePathT (D.getXdgDirectory xdg)

getAppUserDataDirectory ::
  ReadFilePathT IO FilePath
getAppUserDataDirectory =
  ReadFilePathT D.getAppUserDataDirectory

removeFile ::
  ReadFilePathT IO ()
removeFile =
  ReadFilePathT D.removeFile

renameFile ::
  FilePath
  -> ReadFilePathT IO ()
renameFile =
  ReadFilePathT . D.renameFile

renamePath ::
  FilePath
  -> ReadFilePathT IO ()
renamePath =
  ReadFilePathT . D.renamePath

copyFile ::
  FilePath
  -> ReadFilePathT IO ()
copyFile =
  ReadFilePathT . D.copyFile

copyFileWithMetadata ::
  FilePath
  -> ReadFilePathT IO ()
copyFileWithMetadata =
  ReadFilePathT . D.copyFileWithMetadata

getFileSize ::
  ReadFilePathT IO Integer
getFileSize =
  ReadFilePathT D.getFileSize

canonicalizePath ::
  ReadFilePathT IO FilePath
canonicalizePath =
  ReadFilePathT D.canonicalizePath

makeAbsolute ::
  ReadFilePathT IO FilePath
makeAbsolute =
  ReadFilePathT D.makeAbsolute

makeRelativeToCurrentDirectory ::
  ReadFilePathT IO FilePath
makeRelativeToCurrentDirectory =
  ReadFilePathT D.makeRelativeToCurrentDirectory

doesPathExist ::
  ReadFilePathT IO Bool
doesPathExist =
  ReadFilePathT D.doesPathExist

doesFileExist ::
  ReadFilePathT IO Bool
doesFileExist =
  ReadFilePathT D.doesFileExist

doesDirectoryExist ::
  ReadFilePathT IO Bool
doesDirectoryExist =
  ReadFilePathT D.doesDirectoryExist

findExecutable ::
  ReadFilePathT IO (Maybe FilePath)
findExecutable =
  ReadFilePathT D.findExecutable

findExecutables ::
  ReadFilePathT IO [FilePath]
findExecutables =
  ReadFilePathT D.findExecutables

findExecutablesInDirectories ::
  [FilePath]
  -> ReadFilePathT IO [FilePath]
findExecutablesInDirectories =
  ReadFilePathT . D.findExecutablesInDirectories

findFile ::
  [FilePath]
  -> ReadFilePathT IO (Maybe FilePath)
findFile =
  ReadFilePathT . D.findFile

findFiles ::
  [FilePath]
  -> ReadFilePathT IO [FilePath]
findFiles =
  ReadFilePathT . D.findFiles

findFileWith ::
  ReadFilePathT IO Bool
  -> [FilePath]
  -> ReadFilePathT IO (Maybe FilePath)
findFileWith x ps =
  over _Wrapped (`D.findFileWith` ps) x

findFilesWith ::
  ReadFilePathT IO Bool
  -> [FilePath]
  -> ReadFilePathT IO [FilePath]
findFilesWith x ps =
  over _Wrapped (`D.findFilesWith` ps) x

createFileLink ::
  FilePath
  -> ReadFilePathT IO ()
createFileLink =
  ReadFilePathT . D.createFileLink

createDirectoryLink ::
  FilePath
  -> ReadFilePathT IO ()
createDirectoryLink =
  ReadFilePathT . D.createDirectoryLink

removeDirectoryLink ::
  ReadFilePathT IO ()
removeDirectoryLink =
  ReadFilePathT D.removeDirectoryLink

pathIsSymbolicLink ::
  ReadFilePathT IO Bool
pathIsSymbolicLink =
  ReadFilePathT D.pathIsSymbolicLink

getSymbolicLinkTarget ::
  ReadFilePathT IO FilePath
getSymbolicLinkTarget =
  ReadFilePathT D.getSymbolicLinkTarget

getPermissions ::
  ReadFilePathT IO Permissions
getPermissions =
  ReadFilePathT D.getPermissions

setPermissions ::
  Permissions
  -> ReadFilePathT IO ()
setPermissions p =
  ReadFilePathT (`D.setPermissions` p)

copyPermissions ::
  FilePath
  -> ReadFilePathT IO ()
copyPermissions =
  ReadFilePathT . D.copyPermissions

getAccessTime ::
  ReadFilePathT IO UTCTime
getAccessTime =
  ReadFilePathT D.getAccessTime

getModificationTime ::
  ReadFilePathT IO UTCTime
getModificationTime =
  ReadFilePathT D.getModificationTime

setAccessTime ::
  UTCTime
  -> ReadFilePathT IO ()
setAccessTime u =
  ReadFilePathT (`D.setAccessTime` u)

setModificationTime ::
  UTCTime
  -> ReadFilePathT IO ()
setModificationTime u =
  ReadFilePathT (`D.setModificationTime` u)