packages feed

eternal-0.1.0: src/Control/Eternal/System/FileSystem.hs

{-# LANGUAGE UnicodeSyntax #-}
module Control.Eternal.System.FileSystem
  ( copyDir
  ) where

import System.Directory(createDirectory, getDirectoryContents, doesDirectoryExist, copyFile)
import Control.Monad(forM_)

import System.FilePath((</>))

import Control.Eternal.Syntax

copyDir :: FilePath → FilePath → IO ()
copyDir src dst = do
    createDirectory dst
    content ← getDirectoryContents src
    let xs = filter (∉ [".", ".."]) content
    forM_ xs $ \name → let srcPath = src </> name
                           dstPath = dst </> name
        in doesDirectoryExist srcPath >>= \dirExist →
            if dirExist then copyDir srcPath dstPath
                        else copyFile srcPath dstPath