refactor
This commit is contained in:
parent
f82992b8ff
commit
e5b88713a1
2 changed files with 19 additions and 12 deletions
|
@ -87,17 +87,11 @@ withJournalHandle a = do
|
|||
|
||||
{- Checks if there are changes in the journal. -}
|
||||
journalDirty :: Annex Bool
|
||||
journalDirty = withJournalHandle go
|
||||
where
|
||||
go h = do
|
||||
v <- readDirectory h
|
||||
case v of
|
||||
(Just f)
|
||||
| not (dirCruft f) -> do
|
||||
closeDirectory h
|
||||
return True
|
||||
| otherwise -> go h
|
||||
Nothing -> return False
|
||||
journalDirty = do
|
||||
d <- fromRepo gitAnnexJournalDir
|
||||
liftIO $
|
||||
(not <$> isDirectoryEmpty d)
|
||||
`catchIO` (const $ doesDirectoryExist d)
|
||||
|
||||
{- Produces a filename to use in the journal for a file on the branch.
|
||||
-
|
||||
|
|
|
@ -11,7 +11,7 @@ module Utility.Directory where
|
|||
|
||||
import System.IO.Error
|
||||
import System.Directory
|
||||
import Control.Exception (throw)
|
||||
import Control.Exception (throw, bracket)
|
||||
import Control.Monad
|
||||
import Control.Monad.IfElse
|
||||
import System.FilePath
|
||||
|
@ -215,3 +215,16 @@ readDirectory hdl@(DirectoryHandle _ h fdat mv) = do
|
|||
filename <- Win32.getFindDataFileName fdat
|
||||
return (Just filename)
|
||||
#endif
|
||||
|
||||
-- True only when directory exists and contains nothing.
|
||||
-- Throws exception if directory does not exist.
|
||||
isDirectoryEmpty :: FilePath -> IO Bool
|
||||
isDirectoryEmpty d = bracket (openDirectory d) closeDirectory check
|
||||
where
|
||||
check h = do
|
||||
v <- readDirectory h
|
||||
case v of
|
||||
Nothing -> return True
|
||||
Just f
|
||||
| not (dirCruft f) -> return False
|
||||
| otherwise -> check h
|
||||
|
|
Loading…
Add table
Reference in a new issue