factor out pure code
This commit is contained in:
parent
7eec5c516d
commit
ada61676ff
1 changed files with 17 additions and 8 deletions
|
@ -22,14 +22,20 @@ import qualified Data.Set as S
|
||||||
writeFsckResults :: UUID -> FsckResults -> Annex ()
|
writeFsckResults :: UUID -> FsckResults -> Annex ()
|
||||||
writeFsckResults u fsckresults = do
|
writeFsckResults u fsckresults = do
|
||||||
logfile <- fromRepo $ gitAnnexFsckResultsLog u
|
logfile <- fromRepo $ gitAnnexFsckResultsLog u
|
||||||
case fsckresults of
|
case serializeFsckResults fsckresults of
|
||||||
FsckFailed -> store S.empty False logfile
|
Just s -> store s logfile
|
||||||
FsckFoundMissing s t
|
Nothing -> liftIO $
|
||||||
| S.null s -> liftIO $
|
|
||||||
removeWhenExistsWith R.removeLink logfile
|
removeWhenExistsWith R.removeLink logfile
|
||||||
| otherwise -> store s t logfile
|
|
||||||
where
|
where
|
||||||
store s t logfile = writeLogFile logfile $ serialize s t
|
store s logfile = writeLogFile logfile s
|
||||||
|
|
||||||
|
serializeFsckResults :: FsckResults -> Maybe String
|
||||||
|
serializeFsckResults fsckresults = case fsckresults of
|
||||||
|
FsckFailed -> Just (serialize S.empty False)
|
||||||
|
FsckFoundMissing s t
|
||||||
|
| S.null s -> Nothing
|
||||||
|
| otherwise -> Just (serialize s t)
|
||||||
|
where
|
||||||
serialize s t =
|
serialize s t =
|
||||||
let ls = map fromRef (S.toList s)
|
let ls = map fromRef (S.toList s)
|
||||||
in if t
|
in if t
|
||||||
|
@ -40,7 +46,10 @@ readFsckResults :: UUID -> Annex FsckResults
|
||||||
readFsckResults u = do
|
readFsckResults u = do
|
||||||
logfile <- fromRepo $ gitAnnexFsckResultsLog u
|
logfile <- fromRepo $ gitAnnexFsckResultsLog u
|
||||||
liftIO $ catchDefaultIO (FsckFoundMissing S.empty False) $
|
liftIO $ catchDefaultIO (FsckFoundMissing S.empty False) $
|
||||||
deserialize . lines <$> readFile (fromRawFilePath logfile)
|
deserializeFsckResults <$> readFile (fromRawFilePath logfile)
|
||||||
|
|
||||||
|
deserializeFsckResults :: String -> FsckResults
|
||||||
|
deserializeFsckResults = deserialize . lines
|
||||||
where
|
where
|
||||||
deserialize ("truncated":ls) = deserialize' ls True
|
deserialize ("truncated":ls) = deserialize' ls True
|
||||||
deserialize ls = deserialize' ls False
|
deserialize ls = deserialize' ls False
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue