packages feed

uniform-fileio-0.1.5.2: Uniform/FileStatus.hs

----------------------------------------------------------------------
--
-- Module      :  uniform-FileIO
-- Copyright   :  andrew u frank -
--
----------------------------------------------------------------------

{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeFamilies #-}

-- | the routines to take apart the file status
module Uniform.FileStatus
  ( getFileStatus,
    isDirectory,
    isRegularFile,
    getFileStatus',
    isSymbolicLink,
    getModificationTimeFromStatus,
    getFileSize,
    P.EpochTime,
    P.FileStatus,
  )
where

import qualified System.Directory as S
import qualified System.Posix as P
import Uniform.Error 
-- (ErrIO, callIO, putIOwords, showT)
import Uniform.FilenamePath (Path, toShortFilePath)
import Uniform.Strings (putIOwords, showT)

unL :: Path df ar -> FilePath
unL = toShortFilePath

--getFileStatus :: Path df ra -> ErrIO P.FileStatus
-- getFileStatus :: (Control.Monad.Error.Class.MonadError m,
--  Control.Monad.IO.Class.MonadIO m,
--  Control.Monad.Error.Class.ErrorType m ~ Data.Text.Internal.Text)
--     => Path df ar -> m P.FileStatus
getFileStatus fp = callIO $ P.getFileStatus . unL $ fp

getFileStatus' :: FilePath -> ErrIO P.FileStatus
getFileStatus' fp = callIO $ P.getFileStatus fp

isRegularFile :: P.FileStatus -> Bool
isRegularFile = P.isRegularFile

isDirectory :: P.FileStatus -> Bool
isDirectory = P.isDirectory

isSymbolicLink :: P.FileStatus -> Bool
isSymbolicLink = P.isSymbolicLink

getModificationTimeFromStatus :: P.FileStatus -> P.EpochTime
getModificationTimeFromStatus = P.modificationTime

getFileSize = P.fileSize

createSymbolicLink :: Show (Path df ra) => Path df ra -> Path df ra -> ErrIO ()
createSymbolicLink fn tn = do
  putIOwords ["createSymbolidLink", showT fn, "to", showT tn]
  callIO $ P.createSymbolicLink (unL fn) (unL tn)

renameLink :: Path df ra -> Path df ra -> ErrIO ()
renameLink old new = callIO $ P.rename (unL old) (unL new)