summaryrefslogtreecommitdiff
path: root/Annex.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2010-10-12 16:52:01 -0400
committerGravatar Joey Hess <joey@kitenet.net>2010-10-12 16:52:01 -0400
commitcad916d92695c7c04d3cdacbcd333a2dcd109d53 (patch)
tree7a0b3b42e977f99cea556ae1a43fbcec45018544 /Annex.hs
parent921313bcc706f054c33c3eb923c47955710cd0a3 (diff)
hookup annexgetfile
Diffstat (limited to 'Annex.hs')
-rw-r--r--Annex.hs19
1 files changed, 12 insertions, 7 deletions
diff --git a/Annex.hs b/Annex.hs
index 1752cabff..7ac9932f1 100644
--- a/Annex.hs
+++ b/Annex.hs
@@ -24,8 +24,8 @@ import LocationLog
import Types
{- An annexed file's content is stored somewhere under .git/annex/ -}
-annexDir :: GitRepo -> Key -> FilePath
-annexDir repo key = gitDir repo ++ "/annex/" ++ key
+annexLocation :: GitRepo -> Key -> FilePath
+annexLocation repo key = gitDir repo ++ "/annex/" ++ key
{- On startup, examine the git repo, prepare it, and record state for
- later. -}
@@ -55,7 +55,7 @@ annexFile state file = do
Just key -> symlink key
where
symlink key = do
- let dest = annexDir (repo state) key
+ let dest = annexLocation (repo state) key
createDirectoryIfMissing True (parentDir dest)
renameFile file dest
createSymbolicLink dest file
@@ -77,7 +77,7 @@ unannexFile state file = do
case (mkey) of
Nothing -> return ()
Just key -> do
- let src = annexDir (repo state) key
+ let src = annexLocation (repo state) key
removeFile file
renameFile src file
return ()
@@ -88,9 +88,14 @@ annexGetFile state file = do
alreadyannexed <- lookupBackend state file
case (alreadyannexed) of
Nothing -> error $ "not annexed " ++ file
- Just _ -> do error "not implemented" -- TODO
- -- 1. find remote with file
- -- 2. copy file from remote
+ Just backend -> do
+ key <- lookupKey state backend file
+ let dest = annexLocation (repo state) key
+ createDirectoryIfMissing True (parentDir dest)
+ success <- retrieveFile state file dest
+ if (success)
+ then return ()
+ else error $ "failed to get " ++ file
{- Indicates a file is wanted. -}
annexWantFile :: State -> FilePath -> IO ()