factor out pure code

This commit is contained in:
Joey Hess 2021-06-30 16:42:08 -04:00
parent 7eec5c516d
commit ada61676ff
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38

View file

@ -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