diff --git a/cabal-install/Distribution/Client/FileMonitor.hs b/cabal-install/Distribution/Client/FileMonitor.hs index 7a1abb3bf79f0dab184fc7c7026a5e0144dfae61..15cca4a4513c949beda6be7e2669f5d35958e0ee 100644 --- a/cabal-install/Distribution/Client/FileMonitor.hs +++ b/cabal-install/Distribution/Client/FileMonitor.hs @@ -19,6 +19,7 @@ module Distribution.Client.FileMonitor ( monitorDirectoryExistence, monitorFileOrDirectory, monitorFileGlob, + monitorFileGlobExistence, monitorFileSearchPath, monitorFileHashedSearchPath, @@ -156,6 +157,13 @@ monitorFileOrDirectory = MonitorFile FileModTime DirModTime monitorFileGlob :: FilePathGlob -> MonitorFilePath monitorFileGlob = MonitorFileGlob FileHashed DirExists +-- | Monitor a set of files (or directories) identified by a file glob for +-- existence only. The monitored glob is considered to have changed if the set +-- of files matching the glob changes (i.e. creations or deletions). +-- +monitorFileGlobExistence :: FilePathGlob -> MonitorFilePath +monitorFileGlobExistence = MonitorFileGlob FileExists DirExists + -- | Creates a list of files to monitor when you search for a file which -- unsuccessfully looked in @notFoundAtPaths@ before finding it at -- @foundAtPath@. diff --git a/cabal-install/Distribution/Client/RebuildMonad.hs b/cabal-install/Distribution/Client/RebuildMonad.hs index f3ef1c107aa71da585aa7c78d1757e0f2aec80cb..fbd224889151028a888519f5246aab65a67c8fcf 100644 --- a/cabal-install/Distribution/Client/RebuildMonad.hs +++ b/cabal-install/Distribution/Client/RebuildMonad.hs @@ -28,6 +28,7 @@ module Distribution.Client.RebuildMonad ( monitorFileHashedSearchPath, -- ** Monitoring file globs monitorFileGlob, + monitorFileGlobExistence, FilePathGlob(..), FilePathRoot(..), FilePathGlobRel(..), @@ -140,6 +141,6 @@ rerunIfChanged verbosity monitor key action = do matchFileGlob :: FilePathGlob -> Rebuild [FilePath] matchFileGlob glob = do root <- askRoot - monitorFiles [monitorFileGlob glob] + monitorFiles [monitorFileGlobExistence glob] liftIO $ Glob.matchFileGlob root glob