make filename available to fsck messages
This commit is contained in:
parent
c30d38e108
commit
e1d213d6e3
5 changed files with 20 additions and 17 deletions
|
@ -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. -}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue