make filename available to fsck messages

This commit is contained in:
Joey Hess 2011-01-26 20:37:46 -04:00
parent c30d38e108
commit e1d213d6e3
5 changed files with 20 additions and 17 deletions

View file

@ -118,8 +118,8 @@ hasKey key = do
(B.hasKey backend) key
{- Checks a key's backend for problems. -}
fsckKey :: Backend Annex -> Key -> Maybe Int -> Annex Bool
fsckKey backend key numcopies = (B.fsckKey backend) key numcopies
fsckKey :: Backend Annex -> Key -> Maybe FilePath -> Maybe Int -> Annex Bool
fsckKey backend key file numcopies = (B.fsckKey backend) key file numcopies
{- Looks up the key and backend corresponding to an annexed file,
- by examining what the file symlinks to. -}

View file

@ -166,14 +166,14 @@ getNumCopies Nothing = do
- The passed action is first run to allow backends deriving this one
- to do their own checks.
-}
checkKey :: (Key -> Annex Bool) -> Key -> Maybe Int -> Annex Bool
checkKey a key numcopies = do
checkKey :: (Key -> Annex Bool) -> Key -> Maybe FilePath -> Maybe Int -> Annex Bool
checkKey a key file numcopies = do
a_ok <- a key
copies_ok <- checkKeyNumCopies key numcopies
copies_ok <- checkKeyNumCopies key file numcopies
return $ a_ok && copies_ok
checkKeyNumCopies :: Key -> Maybe Int -> Annex Bool
checkKeyNumCopies key numcopies = do
checkKeyNumCopies :: Key -> Maybe FilePath -> Maybe Int -> Annex Bool
checkKeyNumCopies key file numcopies = do
needed <- getNumCopies numcopies
g <- Annex.gitRepo
locations <- liftIO $ keyLocations g key
@ -184,10 +184,12 @@ checkKeyNumCopies key numcopies = do
if present < needed
then do
ppuuids <- prettyPrintUUIDs untrustedlocations
warning $ missingNote (show key) present needed ppuuids
warning $ missingNote (filename file key) present needed ppuuids
return False
else return True
where
filename Nothing k = show k
filename (Just f) _ = f
missingNote :: String -> Int -> Int -> String -> String
missingNote file 0 _ [] =
@ -203,5 +205,5 @@ missingNote file present needed [] =
"\nBack it up with git-annex copy."
missingNote file present needed untrusted =
missingNote file present needed [] ++
"\nThe following untrusted copies may also exist: " ++
"\nThe following untrusted locations may also have copies: " ++
"\n" ++ untrusted

View file

@ -41,8 +41,8 @@ dummyStore _ _ = return False
dummyRemove :: Key -> Maybe a -> Annex Bool
dummyRemove _ _ = return False
dummyFsck :: Key -> Maybe a -> Annex Bool
dummyFsck _ _ = return True
dummyFsck :: Key -> Maybe FilePath -> Maybe a -> Annex Bool
dummyFsck _ _ _ = return True
dummyOk :: Key -> Annex Bool
dummyOk _ = return True

View file

@ -31,9 +31,10 @@ data Backend a = Backend {
-- checks if a backend is storing the content of a key
hasKey :: Key -> a Bool,
-- called during fsck to check a key
-- (second parameter may be the number of copies that there should
-- (second parameter may be the filename associated with it)
-- (third parameter may be the number of copies that there should
-- be of the key)
fsckKey :: Key -> Maybe Int -> a Bool
fsckKey :: Key -> Maybe FilePath -> Maybe Int -> a Bool
}
instance Show (Backend a) where

View file

@ -24,13 +24,13 @@ seek = [withAttrFilesInGit "annex.numcopies" start]
start :: CommandStartAttrFile
start (file, attr) = isAnnexed file $ \(key, backend) -> do
showStart "fsck" file
return $ Just $ perform key backend numcopies
return $ Just $ perform key file backend numcopies
where
numcopies = readMaybe attr :: Maybe Int
perform :: Key -> Backend Annex -> Maybe Int -> CommandPerform
perform key backend numcopies = do
success <- Backend.fsckKey backend key numcopies
perform :: Key -> FilePath -> Backend Annex -> Maybe Int -> CommandPerform
perform key file backend numcopies = do
success <- Backend.fsckKey backend key (Just file) numcopies
if success
then return $ Just $ return True
else return Nothing