addurl --fast: Verifies that the url can be downloaded (only getting its head), and records the size in the key.

This commit is contained in:
Joey Hess 2012-02-10 19:23:23 -04:00
parent 9030f68452
commit 17fed709c8
3 changed files with 14 additions and 4 deletions

View file

@ -24,5 +24,9 @@ backend = Backend {
fsckKey = Nothing fsckKey = Nothing
} }
fromUrl :: String -> Key fromUrl :: String -> Maybe Integer -> Key
fromUrl url = stubKey { keyName = url, keyBackendName = "URL" } fromUrl url size = stubKey
{ keyName = url
, keyBackendName = "URL"
, keySize = size
}

View file

@ -15,6 +15,7 @@ import qualified Backend
import qualified Command.Add import qualified Command.Add
import qualified Annex import qualified Annex
import qualified Backend.URL import qualified Backend.URL
import qualified Utility.Url as Url
import Annex.Content import Annex.Content
import Logs.Web import Logs.Web
import qualified Option import qualified Option
@ -55,7 +56,7 @@ perform url file = ifAnnexed file addurl geturl
download :: String -> FilePath -> CommandPerform download :: String -> FilePath -> CommandPerform
download url file = do download url file = do
showAction $ "downloading " ++ url ++ " " showAction $ "downloading " ++ url ++ " "
let dummykey = Backend.URL.fromUrl url let dummykey = Backend.URL.fromUrl url Nothing
tmp <- fromRepo $ gitAnnexTmpLocation dummykey tmp <- fromRepo $ gitAnnexTmpLocation dummykey
liftIO $ createDirectoryIfMissing True (parentDir tmp) liftIO $ createDirectoryIfMissing True (parentDir tmp)
stopUnless (downloadUrl [url] tmp) $ do stopUnless (downloadUrl [url] tmp) $ do
@ -70,7 +71,10 @@ download url file = do
nodownload :: String -> FilePath -> CommandPerform nodownload :: String -> FilePath -> CommandPerform
nodownload url file = do nodownload url file = do
let key = Backend.URL.fromUrl url (exists, size) <- liftIO $ Url.exists url
unless exists $
error $ "unable to access url: " ++ url
let key = Backend.URL.fromUrl url size
setUrlPresent key url setUrlPresent key url
next $ Command.Add.cleanup file key False next $ Command.Add.cleanup file key False

2
debian/changelog vendored
View file

@ -20,6 +20,8 @@ git-annex (3.20120124) UNRELEASED; urgency=low
* Fix teardown of stale cached ssh connections. * Fix teardown of stale cached ssh connections.
* When checking that an url has a key, verify that the Content-Length, * When checking that an url has a key, verify that the Content-Length,
if available, matches the size of the key. if available, matches the size of the key.
* addurl --fast: Verifies that the url can be downloaded (only getting
its head), and records the size in the key.
-- Joey Hess <joeyh@debian.org> Tue, 24 Jan 2012 16:21:55 -0400 -- Joey Hess <joeyh@debian.org> Tue, 24 Jan 2012 16:21:55 -0400