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 u fsckresults = do
|
||||
logfile <- fromRepo $ gitAnnexFsckResultsLog u
|
||||
case fsckresults of
|
||||
FsckFailed -> store S.empty False logfile
|
||||
FsckFoundMissing s t
|
||||
| S.null s -> liftIO $
|
||||
case serializeFsckResults fsckresults of
|
||||
Just s -> store s logfile
|
||||
Nothing -> liftIO $
|
||||
removeWhenExistsWith R.removeLink logfile
|
||||
| otherwise -> store s t logfile
|
||||
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 =
|
||||
let ls = map fromRef (S.toList s)
|
||||
in if t
|
||||
|
@ -40,7 +46,10 @@ readFsckResults :: UUID -> Annex FsckResults
|
|||
readFsckResults u = do
|
||||
logfile <- fromRepo $ gitAnnexFsckResultsLog u
|
||||
liftIO $ catchDefaultIO (FsckFoundMissing S.empty False) $
|
||||
deserialize . lines <$> readFile (fromRawFilePath logfile)
|
||||
deserializeFsckResults <$> readFile (fromRawFilePath logfile)
|
||||
|
||||
deserializeFsckResults :: String -> FsckResults
|
||||
deserializeFsckResults = deserialize . lines
|
||||
where
|
||||
deserialize ("truncated":ls) = deserialize' ls True
|
||||
deserialize ls = deserialize' ls False
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue