add hasKey

This commit is contained in:
Joey Hess 2010-10-14 15:31:44 -04:00
parent 4b7e54eddb
commit 859731ee5b
3 changed files with 17 additions and 8 deletions

View file

@ -13,13 +13,16 @@ import LocationLog
import Locations
import qualified Remotes
import qualified GitRepo as Git
import Utility
import Core
backend = Backend {
name = "file",
getKey = keyValue,
storeFileKey = dummyStore,
retrieveKeyFile = copyKeyFile,
removeKey = dummyRemove
removeKey = dummyRemove,
hasKey = checkKeyFile
}
-- direct mapping from filename to key
@ -29,8 +32,7 @@ keyValue file = return $ Just $ Key file
{- This backend does not really do any independant data storage,
- it relies on the file contents in .git/annex/ in this repo,
- and other accessible repos. So storing a key is
- a no-op. TODO until support is added for git annex --push otherrepo,
- then these could implement that.. -}
- a no-op. -}
dummyStore :: FilePath -> Key -> Annex (Bool)
dummyStore file key = return True
@ -38,6 +40,10 @@ dummyStore file key = return True
dummyRemove :: Key -> Annex Bool
dummyRemove url = return True
{- Just check if the .git/annex/ file for the key exists. -}
checkKeyFile :: Key -> Annex Bool
checkKeyFile k = inAnnex backend k
{- Try to find a copy of the file in one of the remotes,
- and copy it over to this one. -}
copyKeyFile :: Key -> FilePath -> Annex (Bool)

View file

@ -13,7 +13,8 @@ backend = Backend {
getKey = keyValue,
storeFileKey = dummyStore,
retrieveKeyFile = downloadUrl,
removeKey = dummyRemove
removeKey = dummyOk,
hasKey = dummyOk
}
-- cannot generate url from filename
@ -24,9 +25,9 @@ keyValue file = return Nothing
dummyStore :: FilePath -> Key -> Annex Bool
dummyStore file url = return False
-- allow keys to be removed
dummyRemove :: Key -> Annex Bool
dummyRemove url = return True
-- allow keys to be removed; presumably they can always be downloaded again
dummyOk :: Key -> Annex Bool
dummyOk url = return True
downloadUrl :: Key -> FilePath -> Annex Bool
downloadUrl url file = do

View file

@ -37,7 +37,9 @@ data Backend = Backend {
-- retrieves a key's contents to a file
retrieveKeyFile :: Key -> FilePath -> Annex Bool,
-- removes a key
removeKey :: Key -> Annex Bool
removeKey :: Key -> Annex Bool,
-- checks if a backend is storing the content of a key
hasKey :: Key -> Annex Bool
}
instance Show Backend where