diff options
author | Joey Hess <joey@kitenet.net> | 2010-10-12 16:52:01 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2010-10-12 16:52:01 -0400 |
commit | cad916d92695c7c04d3cdacbcd333a2dcd109d53 (patch) | |
tree | 7a0b3b42e977f99cea556ae1a43fbcec45018544 /Annex.hs | |
parent | 921313bcc706f054c33c3eb923c47955710cd0a3 (diff) |
hookup annexgetfile
Diffstat (limited to 'Annex.hs')
-rw-r--r-- | Annex.hs | 19 |
1 files changed, 12 insertions, 7 deletions
@@ -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 () |