From 3f6c94f897231b407e3c976e8d789d420ee5e6b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Fri, 14 Nov 2025 20:36:26 +0100 Subject: Separate module for file-related utilities --- minici.cabal | 1 + src/Destination.hs | 22 ++-------------------- src/FileUtils.hs | 25 +++++++++++++++++++++++++ 3 files changed, 28 insertions(+), 20 deletions(-) create mode 100644 src/FileUtils.hs diff --git a/minici.cabal b/minici.cabal index e82a3b4..c8a9d3a 100644 --- a/minici.cabal +++ b/minici.cabal @@ -58,6 +58,7 @@ executable minici Config Destination Eval + FileUtils Job Job.Types Output diff --git a/src/Destination.hs b/src/Destination.hs index dccac03..4fd8cd8 100644 --- a/src/Destination.hs +++ b/src/Destination.hs @@ -10,7 +10,6 @@ module Destination ( copyRecursiveForce, ) where -import Control.Monad import Control.Monad.IO.Class import Data.Text (Text) @@ -19,6 +18,8 @@ import Data.Text qualified as T import System.FilePath import System.Directory +import FileUtils + data Destination = FilesystemDestination FilePath @@ -51,22 +52,3 @@ copyToDestination source (FilesystemDestination base) inner = do liftIO $ do createDirectoryIfMissing True $ takeDirectory target copyRecursiveForce source target - - -copyRecursive :: FilePath -> FilePath -> IO () -copyRecursive from to = do - doesDirectoryExist from >>= \case - False -> do - copyFile from to - True -> do - createDirectory to - content <- listDirectory from - forM_ content $ \name -> do - copyRecursive (from name) (to name) - -copyRecursiveForce :: FilePath -> FilePath -> IO () -copyRecursiveForce from to = do - doesDirectoryExist to >>= \case - False -> return () - True -> removeDirectoryRecursive to - copyRecursive from to diff --git a/src/FileUtils.hs b/src/FileUtils.hs new file mode 100644 index 0000000..d147b7c --- /dev/null +++ b/src/FileUtils.hs @@ -0,0 +1,25 @@ +module FileUtils where + +import Control.Monad + +import System.FilePath +import System.Directory + + +copyRecursive :: FilePath -> FilePath -> IO () +copyRecursive from to = do + doesDirectoryExist from >>= \case + False -> do + copyFile from to + True -> do + createDirectory to + content <- listDirectory from + forM_ content $ \name -> do + copyRecursive (from name) (to name) + +copyRecursiveForce :: FilePath -> FilePath -> IO () +copyRecursiveForce from to = do + doesDirectoryExist to >>= \case + False -> return () + True -> removeDirectoryRecursive to + copyRecursive from to -- cgit v1.2.3