Move Base.removeFileIfExists to Rules.Actions.removeFile.
authorAndrey Mokhov <andrey.mokhov@gmail.com>
Thu, 5 May 2016 02:59:50 +0000 (03:59 +0100)
committerAndrey Mokhov <andrey.mokhov@gmail.com>
Thu, 5 May 2016 02:59:50 +0000 (03:59 +0100)
See #163.

src/Base.hs
src/Rules/Actions.hs
src/Rules/Clean.hs
src/Rules/Dependencies.hs
src/Rules/Library.hs

index ccadd22..a26fea1 100644 (file)
@@ -23,7 +23,7 @@ module Base (
     -- * Miscellaneous utilities
     minusOrd, intersectOrd, lookupAll, replaceEq, quote, replaceSeparators,
     decodeModule, encodeModule, unifyPath, (-/-), versionToInt,
-    removeFileIfExists, matchVersionedFilePath
+    matchVersionedFilePath
     ) where
 
 import Control.Applicative
@@ -39,7 +39,6 @@ import Development.Shake hiding (parallel, unit, (*>), Normal)
 import Development.Shake.Classes
 import Development.Shake.FilePath
 import System.Console.ANSI
-import qualified System.Directory as IO
 import System.IO
 
 -- TODO: reexport Stage, etc.?
@@ -172,10 +171,6 @@ lookupAll (x:xs) (y:ys) = case compare x (fst y) of
     EQ -> Just (snd y) : lookupAll xs (y:ys)
     GT -> lookupAll (x:xs) ys
 
--- | Remove a file that doesn't necessarily exist
-removeFileIfExists :: FilePath -> Action ()
-removeFileIfExists f = liftIO . whenM (IO.doesFileExist f) $ IO.removeFile f
-
 -- | Given a @prefix@ and a @suffix@ check whether a @filePath@ matches the
 -- template @prefix ++ version ++ suffix@ where @version@ is an arbitrary string
 -- comprising digits (@0-9@), dashes (@-@), and dots (@.@). Examples:
index 25bf72e..9910ce5 100644 (file)
@@ -1,6 +1,6 @@
 module Rules.Actions (
     build, buildWithResources, buildWithCmdOptions, copyFile, moveFile,
-    createDirectory, removeDirectory, copyDirectory, moveDirectory,
+    removeFile, createDirectory, removeDirectory, copyDirectory, moveDirectory,
     applyPatch, fixFile, runMake, runMakeVerbose, renderLibrary, renderProgram,
     runBuilder, makeExecutable
     ) where
@@ -94,6 +94,12 @@ moveFile source target = do
     putProgressInfo $ renderAction "Move file" source target
     liftIO $ IO.renameFile source target
 
+-- | Remove a file that doesn't necessarily exist.
+removeFile :: FilePath -> Action ()
+removeFile file = do
+    putBuild $ "| Remove file " ++ file
+    liftIO . whenM (IO.doesFileExist file) $ IO.removeFile file
+
 createDirectory :: FilePath -> Action ()
 createDirectory dir = do
     putBuild $ "| Create directory " ++ dir
index f615e54..613073a 100644 (file)
@@ -17,9 +17,7 @@ cleanRules = do
         removeDirectory programInplacePath
         removeDirectory "inplace/lib"
         removeDirectory derivedConstantsPath
-        forM_ includesDependencies $ \file -> do
-            putBuild $ "| Remove " ++ file
-            removeFileIfExists file
+        forM_ includesDependencies removeFile
         putBuild $ "| Remove files generated by ghc-cabal..."
         forM_ knownPackages $ \pkg ->
             forM_ [Stage0 ..] $ \stage -> do
index 9059b3d..f5d781a 100644 (file)
@@ -29,7 +29,7 @@ buildPackageDependencies rs context@Context {..} =
             then writeFileChanged out ""
             else buildWithResources rs $
                 Target context (Ghc FindDependencies stage) srcs [out]
-            removeFileIfExists $ out <.> "bak"
+            removeFile $ out <.> "bak"
 
         -- TODO: don't accumulate *.deps into .dependencies
         path -/- ".dependencies" %> \out -> do
index 8e09162..2b90d1f 100644 (file)
@@ -22,7 +22,7 @@ buildPackageLibrary context@Context {..} = do
 
     -- TODO: handle dynamic libraries
     matchVersionedFilePath libPrefix (waySuffix way <.> "a") ?> \a -> do
-        removeFileIfExists a
+        removeFile a
         cSrcs <- cSources context
         hSrcs <- hSources context