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. -}
|
{- Checks if there are changes in the journal. -}
|
||||||
journalDirty :: Annex Bool
|
journalDirty :: Annex Bool
|
||||||
journalDirty = withJournalHandle go
|
journalDirty = do
|
||||||
where
|
d <- fromRepo gitAnnexJournalDir
|
||||||
go h = do
|
liftIO $
|
||||||
v <- readDirectory h
|
(not <$> isDirectoryEmpty d)
|
||||||
case v of
|
`catchIO` (const $ doesDirectoryExist d)
|
||||||
(Just f)
|
|
||||||
| not (dirCruft f) -> do
|
|
||||||
closeDirectory h
|
|
||||||
return True
|
|
||||||
| otherwise -> go h
|
|
||||||
Nothing -> return False
|
|
||||||
|
|
||||||
{- Produces a filename to use in the journal for a file on the branch.
|
{- 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.IO.Error
|
||||||
import System.Directory
|
import System.Directory
|
||||||
import Control.Exception (throw)
|
import Control.Exception (throw, bracket)
|
||||||
import Control.Monad
|
import Control.Monad
|
||||||
import Control.Monad.IfElse
|
import Control.Monad.IfElse
|
||||||
import System.FilePath
|
import System.FilePath
|
||||||
|
@ -215,3 +215,16 @@ readDirectory hdl@(DirectoryHandle _ h fdat mv) = do
|
||||||
filename <- Win32.getFindDataFileName fdat
|
filename <- Win32.getFindDataFileName fdat
|
||||||
return (Just filename)
|
return (Just filename)
|
||||||
#endif
|
#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