Urls can now be claimed by remotes. This will allow creating, for example, a external special remote that handles magnet: and *.torrent urls.
This commit is contained in:
parent
ee27298b91
commit
30bf112185
28 changed files with 346 additions and 114 deletions
|
@ -1,6 +1,6 @@
|
|||
{- git-annex command
|
||||
-
|
||||
- Copyright 2010 Joey Hess <joey@kitenet.net>
|
||||
- Copyright 2010-2014 Joey Hess <joey@kitenet.net>
|
||||
-
|
||||
- Licensed under the GNU GPL version 3 or higher.
|
||||
-}
|
||||
|
@ -13,6 +13,7 @@ import Common.Annex
|
|||
import Command
|
||||
import Remote
|
||||
import Logs.Trust
|
||||
import Logs.Web
|
||||
|
||||
cmd :: [Command]
|
||||
cmd = [noCommit $ withOptions (jsonOption : keyOptions) $
|
||||
|
@ -57,9 +58,17 @@ perform remotemap key = do
|
|||
untrustedheader = "The following untrusted locations may also have copies:\n"
|
||||
|
||||
performRemote :: Key -> Remote -> Annex ()
|
||||
performRemote key remote = maybe noop go $ whereisKey remote
|
||||
performRemote key remote = do
|
||||
ls <- (++)
|
||||
<$> askremote
|
||||
<*> claimedurls
|
||||
unless (null ls) $ showLongNote $ unlines $
|
||||
map (\l -> name remote ++ ": " ++ l) ls
|
||||
where
|
||||
go a = do
|
||||
ls <- a key
|
||||
unless (null ls) $ showLongNote $ unlines $
|
||||
map (\l -> name remote ++ ": " ++ l) ls
|
||||
askremote = maybe (pure []) (flip id key) (whereisKey remote)
|
||||
claimedurls = do
|
||||
us <- map fst
|
||||
. filter (\(_, d) -> d == OtherDownloader)
|
||||
. map getDownloader
|
||||
<$> getUrls key
|
||||
filterM (\u -> (==) <$> pure remote <*> claimingUrl u) us
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue