diff options
author | Joey Hess <joeyh@joeyh.name> | 2015-03-05 14:46:08 -0400 |
---|---|---|
committer | Joey Hess <joeyh@joeyh.name> | 2015-03-05 14:46:08 -0400 |
commit | 5e38a5fba69a7b13036e2910e74e2c72d5c9da30 (patch) | |
tree | 62ee4e3dba5b40537d8341cbd407a37099241f94 | |
parent | f4d69c300199cc43532c0a82661b5396f3de5a46 (diff) |
addurl: Added --raw option, which bypasses special handling of quvi, bittorrent etc urls.
-rw-r--r-- | Command/AddUrl.hs | 8 | ||||
-rw-r--r-- | Command/ImportFeed.hs | 39 | ||||
-rw-r--r-- | debian/changelog | 2 | ||||
-rw-r--r-- | doc/git-annex.mdwn | 7 |
4 files changed, 37 insertions, 19 deletions
diff --git a/Command/AddUrl.hs b/Command/AddUrl.hs index 426bc372c..f8a4ca59b 100644 --- a/Command/AddUrl.hs +++ b/Command/AddUrl.hs @@ -38,7 +38,7 @@ import qualified Utility.Quvi as Quvi #endif cmd :: [Command] -cmd = [notBareRepo $ withOptions [fileOption, pathdepthOption, relaxedOption] $ +cmd = [notBareRepo $ withOptions [fileOption, pathdepthOption, relaxedOption, rawOption] $ command "addurl" (paramRepeating paramUrl) seek SectionCommon "add urls to annex"] @@ -51,14 +51,18 @@ pathdepthOption = fieldOption [] "pathdepth" paramNumber "path components to use relaxedOption :: Option relaxedOption = flagOption [] "relaxed" "skip size check" +rawOption :: Option +rawOption = flagOption [] "raw" "disable special handling for torrents, quvi, etc" + seek :: CommandSeek seek us = do optfile <- getOptionField fileOption return relaxed <- getOptionFlag relaxedOption + raw <- getOptionFlag rawOption pathdepth <- getOptionField pathdepthOption (return . maybe Nothing readish) forM_ us $ \u -> do r <- Remote.claimingUrl u - if Remote.uuid r == webUUID + if Remote.uuid r == webUUID || raw then void $ commandAction $ startWeb relaxed optfile pathdepth u else do pathmax <- liftIO $ fileNameLengthLimit "." diff --git a/Command/ImportFeed.hs b/Command/ImportFeed.hs index ed035fa85..231c921c3 100644 --- a/Command/ImportFeed.hs +++ b/Command/ImportFeed.hs @@ -28,7 +28,7 @@ import Types.UrlContents import Logs.Web import qualified Utility.Format import Utility.Tmp -import Command.AddUrl (addUrlFile, downloadRemoteFile, relaxedOption) +import Command.AddUrl (addUrlFile, downloadRemoteFile, relaxedOption, rawOption) import Annex.Perms import Annex.UUID import Backend.URL (fromUrl) @@ -42,7 +42,7 @@ import Logs.MetaData import Annex.MetaData cmd :: [Command] -cmd = [notBareRepo $ withOptions [templateOption, relaxedOption] $ +cmd = [notBareRepo $ withOptions [templateOption, relaxedOption, rawOption] $ command "importfeed" (paramRepeating paramUrl) seek SectionCommon "import files from podcast feeds"] @@ -53,23 +53,30 @@ seek :: CommandSeek seek ps = do tmpl <- getOptionField templateOption return relaxed <- getOptionFlag relaxedOption + raw <- getOptionFlag rawOption + let opts = Opts { relaxedOpt = relaxed, rawOpt = raw } cache <- getCache tmpl - withStrings (start relaxed cache) ps + withStrings (start opts cache) ps -start :: Bool -> Cache -> URLString -> CommandStart -start relaxed cache url = do +data Opts = Opts + { relaxedOpt :: Bool + , rawOpt :: Bool + } + +start :: Opts -> Cache -> URLString -> CommandStart +start opts cache url = do showStart "importfeed" url - next $ perform relaxed cache url + next $ perform opts cache url -perform :: Bool -> Cache -> URLString -> CommandPerform -perform relaxed cache url = do +perform :: Opts -> Cache -> URLString -> CommandPerform +perform opts cache url = do v <- findDownloads url case v of [] -> do feedProblem url "bad feed content" next $ return True l -> do - ok <- and <$> mapM (performDownload relaxed cache) l + ok <- and <$> mapM (performDownload opts cache) l unless ok $ feedProblem url "problem downloading item" next $ cleanup url True @@ -138,15 +145,15 @@ downloadFeed url = do , return Nothing ) -performDownload :: Bool -> Cache -> ToDownload -> Annex Bool -performDownload relaxed cache todownload = case location todownload of +performDownload :: Opts -> Cache -> ToDownload -> Annex Bool +performDownload opts cache todownload = case location todownload of Enclosure url -> checkknown url $ rundownload url (takeExtension url) $ \f -> do r <- Remote.claimingUrl url - if Remote.uuid r == webUUID + if Remote.uuid r == webUUID || rawOpt opts then do urlinfo <- Url.withUrlOptions (Url.getUrlInfo url) - maybeToList <$> addUrlFile relaxed url urlinfo f + maybeToList <$> addUrlFile (relaxedOpt opts) url urlinfo f else do res <- tryNonAsync $ maybe (error $ "unable to checkUrl of " ++ Remote.name r) @@ -156,10 +163,10 @@ performDownload relaxed cache todownload = case location todownload of Left _ -> return [] Right (UrlContents sz _) -> maybeToList <$> - downloadRemoteFile r relaxed url f sz + downloadRemoteFile r (relaxedOpt opts) url f sz Right (UrlMulti l) -> do kl <- forM l $ \(url', sz, subf) -> - downloadRemoteFile r relaxed url' (f </> fromSafeFilePath subf) sz + downloadRemoteFile r (relaxedOpt opts) url' (f </> fromSafeFilePath subf) sz return $ if all isJust kl then catMaybes kl else [] @@ -177,7 +184,7 @@ performDownload relaxed cache todownload = case location todownload of let videourl = Quvi.linkUrl link checkknown videourl $ rundownload videourl ("." ++ Quvi.linkSuffix link) $ \f -> - maybeToList <$> addUrlFileQuvi relaxed quviurl videourl f + maybeToList <$> addUrlFileQuvi (relaxedOpt opts) quviurl videourl f #else return False #endif diff --git a/debian/changelog b/debian/changelog index 05e2cadb9..a7deae107 100644 --- a/debian/changelog +++ b/debian/changelog @@ -31,6 +31,8 @@ git-annex (5.2015022) UNRELEASED; urgency=medium (For example, a newly checked out git submodule.) * Added SETURIPRESENT and SETURIMISSING to external special remote protocol, useful for things like ipfs that don't use regular urls. + * addurl: Added --raw option, which bypasses special handling of quvi, + bittorrent etc urls. -- Joey Hess <id@joeyh.name> Thu, 19 Feb 2015 14:16:03 -0400 diff --git a/doc/git-annex.mdwn b/doc/git-annex.mdwn index 9cc198bbd..de4a580ed 100644 --- a/doc/git-annex.mdwn +++ b/doc/git-annex.mdwn @@ -236,6 +236,10 @@ subdirectories). Urls to torrent files (including magnet links) will cause the content of the torrent to be downloaded, using `aria2c`. + To prevent special handling of urls by quvi, bittorrent, and other + special remotes, specify `--raw`. This will for example, make addurl + download the .torrent file and not the contents it points to. + * `rmurl file url` Record that the file is no longer available at the url. @@ -289,7 +293,8 @@ subdirectories). The default template is '${feedtitle}/${itemtitle}${extension}' (Other available variables: feedauthor, itemauthor, itemsummary, itemdescription, itemrights, itemid, itempubdate, title, author) - The `--relaxed` and `--fast` options behave the same as they do in addurl. + The `--relaxed`, `--fast`, and `--raw` options behave the same as they + do in addurl. When quvi is installed, links in the feed are tested to see if they are on a video hosting site, and the video is downloaded. This allows |