addurl: --fast can be used to avoid immediately downloading the url.
The tricky part about this is that to generate a key, the file must be present already. Worked around by adding (back) an URL key type, which is used for addurl --fast.
This commit is contained in:
parent
dd8e649f49
commit
dede05171b
7 changed files with 65 additions and 19 deletions
|
@ -17,10 +17,10 @@ import qualified Backend
|
|||
import qualified Remote.Web
|
||||
import qualified Command.Add
|
||||
import qualified Annex
|
||||
import qualified Backend.URL
|
||||
import Messages
|
||||
import Content
|
||||
import PresenceLog
|
||||
import Types.Key
|
||||
import Locations
|
||||
import Utility
|
||||
|
||||
|
@ -42,9 +42,14 @@ start s = do
|
|||
|
||||
perform :: String -> FilePath -> CommandPerform
|
||||
perform url file = do
|
||||
fast <- Annex.getState Annex.fast
|
||||
if fast then nodownload url file else download url file
|
||||
|
||||
download :: String -> FilePath -> CommandPerform
|
||||
download url file = do
|
||||
g <- Annex.gitRepo
|
||||
showAction $ "downloading " ++ url ++ " "
|
||||
let dummykey = stubKey { keyName = url, keyBackendName = "URL" }
|
||||
let dummykey = Backend.URL.fromUrl url
|
||||
let tmp = gitAnnexTmpLocation g dummykey
|
||||
liftIO $ createDirectoryIfMissing True (parentDir tmp)
|
||||
ok <- Remote.Web.download [url] tmp
|
||||
|
@ -57,9 +62,16 @@ perform url file = do
|
|||
Just (key, _) -> do
|
||||
moveAnnex key tmp
|
||||
Remote.Web.setUrl key url InfoPresent
|
||||
next $ Command.Add.cleanup file key
|
||||
next $ Command.Add.cleanup file key True
|
||||
else stop
|
||||
|
||||
nodownload :: String -> FilePath -> CommandPerform
|
||||
nodownload url file = do
|
||||
let key = Backend.URL.fromUrl url
|
||||
Remote.Web.setUrl key url InfoPresent
|
||||
|
||||
next $ Command.Add.cleanup file key False
|
||||
|
||||
url2file :: URI -> IO FilePath
|
||||
url2file url = do
|
||||
let parts = filter safe $ split "/" $ uriPath url
|
||||
|
@ -75,8 +87,7 @@ url2file url = do
|
|||
e <- doesFileExist file
|
||||
when e $ error "already have this url"
|
||||
return file
|
||||
safe s
|
||||
| null s = False
|
||||
| s == "." = False
|
||||
| s == ".." = False
|
||||
| otherwise = True
|
||||
safe "" = False
|
||||
safe "." = False
|
||||
safe ".." = False
|
||||
safe _ = True
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue