summaryrefslogtreecommitdiff
path: root/Backend
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2010-10-14 15:31:44 -0400
committerGravatar Joey Hess <joey@kitenet.net>2010-10-14 15:31:44 -0400
commit859731ee5b09072d112296a073cb152007d7785a (patch)
tree9b996986b97be6723a08950a33e9ffc4e36e59be /Backend
parent4b7e54eddb953ee3ec3ce1734e2748fc3e2f2f9f (diff)
add hasKey
Diffstat (limited to 'Backend')
-rw-r--r--Backend/File.hs12
-rw-r--r--Backend/Url.hs9
2 files changed, 14 insertions, 7 deletions
diff --git a/Backend/File.hs b/Backend/File.hs
index 311fe820b..893850a69 100644
--- a/Backend/File.hs
+++ b/Backend/File.hs
@@ -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)
diff --git a/Backend/Url.hs b/Backend/Url.hs
index 3d971864a..325a7e217 100644
--- a/Backend/Url.hs
+++ b/Backend/Url.hs
@@ -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