From e15223eba22e27f934c366b17a62c80f676360e8 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 11 Apr 2013 13:35:52 -0400 Subject: addurl: Bugfix: Did not properly add file in direct mode. --- Command/AddUrl.hs | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) (limited to 'Command/AddUrl.hs') diff --git a/Command/AddUrl.hs b/Command/AddUrl.hs index 7c235922d..a8e3588d8 100644 --- a/Command/AddUrl.hs +++ b/Command/AddUrl.hs @@ -14,6 +14,7 @@ import Command import Backend import qualified Command.Add import qualified Annex +import qualified Annex.Queue import qualified Backend.URL import qualified Utility.Url as Url import Annex.Content @@ -23,6 +24,7 @@ import Types.Key import Types.KeySource import Config import Annex.Content.Direct +import Logs.Location def :: [Command] def = [notBareRepo $ withOptions [fileOption, pathdepthOption, relaxedOption] $ @@ -92,12 +94,21 @@ download url file = do k <- genKey source backend case k of Nothing -> stop - Just (key, _) -> do - whenM isDirect $ - void $ addAssociatedFile key file - moveAnnex key tmp - setUrlPresent key url - next $ Command.Add.cleanup file key True + Just (key, _) -> next $ cleanup url file key (Just tmp) + +cleanup :: String -> FilePath -> Key -> Maybe FilePath -> CommandCleanup +cleanup url file key mtmp = do + when (isJust mtmp) $ + logStatus key InfoPresent + setUrlPresent key url + Command.Add.addLink file key False + whenM isDirect $ do + void $ addAssociatedFile key file + {- For moveAnnex to work in direct mode, the symlink + - must already exist, so flush the queue. -} + Annex.Queue.flush + maybe noop (moveAnnex key) mtmp + return True nodownload :: Bool -> String -> FilePath -> CommandPerform nodownload relaxed url file = do @@ -108,10 +119,7 @@ nodownload relaxed url file = do if exists then do let key = Backend.URL.fromUrl url size - whenM isDirect $ - void $ addAssociatedFile key file - setUrlPresent key url - next $ Command.Add.cleanup file key False + next $ cleanup url file key Nothing else do warning $ "unable to access url: " ++ url stop -- cgit v1.2.3