addurl: Added a --file option
Can be used to specify what file the url is added to. This can be used to override the default filename that is used when adding an url, which is based on the url. Or, when the file already exists, the url is recorded as another location of the file.
This commit is contained in:
parent
57a747d081
commit
ef013506cb
4 changed files with 37 additions and 16 deletions
|
@ -17,26 +17,39 @@ import qualified Annex
|
||||||
import qualified Backend.URL
|
import qualified Backend.URL
|
||||||
import Annex.Content
|
import Annex.Content
|
||||||
import Logs.Web
|
import Logs.Web
|
||||||
|
import qualified Option
|
||||||
|
|
||||||
def :: [Command]
|
def :: [Command]
|
||||||
def = [command "addurl" (paramRepeating paramUrl) seek "add urls to annex"]
|
def = [withOptions [fileOption] $
|
||||||
|
command "addurl" (paramRepeating paramUrl) seek "add urls to annex"]
|
||||||
|
|
||||||
|
fileOption :: Option
|
||||||
|
fileOption = Option.field [] "file" paramFile "specify what file the url is added to"
|
||||||
|
|
||||||
seek :: [CommandSeek]
|
seek :: [CommandSeek]
|
||||||
seek = [withStrings start]
|
seek = [withField fileOption return $ \f ->
|
||||||
|
withStrings $ start f]
|
||||||
|
|
||||||
start :: String -> CommandStart
|
start :: Maybe FilePath -> String -> CommandStart
|
||||||
start s = notBareRepo $ go $ parseURI s
|
start optfile s = notBareRepo $ go $ parseURI s
|
||||||
where
|
where
|
||||||
go Nothing = error $ "bad url " ++ s
|
go Nothing = error $ "bad url " ++ s
|
||||||
go (Just url) = do
|
go (Just url) = do
|
||||||
file <- liftIO $ url2file url
|
let file = fromMaybe (url2file url) optfile
|
||||||
showStart "addurl" file
|
showStart "addurl" file
|
||||||
next $ perform s file
|
next $ perform s file
|
||||||
|
|
||||||
perform :: String -> FilePath -> CommandPerform
|
perform :: String -> FilePath -> CommandPerform
|
||||||
perform url file = do
|
perform url file = ifAnnexed file addurl geturl
|
||||||
fast <- Annex.getState Annex.fast
|
where
|
||||||
if fast then nodownload url file else download url file
|
geturl = do
|
||||||
|
whenM (liftIO $ doesFileExist file) $
|
||||||
|
error $ "already have this url in " ++ file
|
||||||
|
fast <- Annex.getState Annex.fast
|
||||||
|
if fast then nodownload url file else download url file
|
||||||
|
addurl (key, _backend) = do
|
||||||
|
setUrlPresent key url
|
||||||
|
next $ return True
|
||||||
|
|
||||||
download :: String -> FilePath -> CommandPerform
|
download :: String -> FilePath -> CommandPerform
|
||||||
download url file = do
|
download url file = do
|
||||||
|
@ -60,12 +73,8 @@ nodownload url file = do
|
||||||
setUrlPresent key url
|
setUrlPresent key url
|
||||||
next $ Command.Add.cleanup file key False
|
next $ Command.Add.cleanup file key False
|
||||||
|
|
||||||
url2file :: URI -> IO FilePath
|
url2file :: URI -> FilePath
|
||||||
url2file url = do
|
url2file url = escape $ uriRegName auth ++ uriPath url ++ uriQuery url
|
||||||
whenM (doesFileExist file) $
|
|
||||||
error $ "already have this url in " ++ file
|
|
||||||
return file
|
|
||||||
where
|
where
|
||||||
file = escape $ uriRegName auth ++ uriPath url ++ uriQuery url
|
|
||||||
escape = replace "/" "_" . replace "?" "_"
|
escape = replace "/" "_" . replace "?" "_"
|
||||||
auth = fromMaybe (error $ "bad url " ++ show url) $ uriAuthority url
|
auth = fromMaybe (error $ "bad url " ++ show url) $ uriAuthority url
|
||||||
|
|
2
Usage.hs
2
Usage.hs
|
@ -76,6 +76,8 @@ paramDate :: String
|
||||||
paramDate = "DATE"
|
paramDate = "DATE"
|
||||||
paramFormat :: String
|
paramFormat :: String
|
||||||
paramFormat = "FORMAT"
|
paramFormat = "FORMAT"
|
||||||
|
paramFile :: String
|
||||||
|
paramFile = "FILE"
|
||||||
paramKeyValue :: String
|
paramKeyValue :: String
|
||||||
paramKeyValue = "K=V"
|
paramKeyValue = "K=V"
|
||||||
paramNothing :: String
|
paramNothing :: String
|
||||||
|
|
5
debian/changelog
vendored
5
debian/changelog
vendored
|
@ -11,6 +11,11 @@ git-annex (3.20120124) UNRELEASED; urgency=low
|
||||||
This version can only be built with ghc 7.4 or newer.
|
This version can only be built with ghc 7.4 or newer.
|
||||||
* S3: Fix irrefutable pattern failure when accessing encrypted S3
|
* S3: Fix irrefutable pattern failure when accessing encrypted S3
|
||||||
credentials.
|
credentials.
|
||||||
|
* addurl: Added a --file option, which can be used to specify what
|
||||||
|
file the url is added to. This can be used to override the default
|
||||||
|
filename that is used when adding an url, which is based on the url.
|
||||||
|
Or, when the file already exists, the url is recorded as another
|
||||||
|
location of the file.
|
||||||
|
|
||||||
-- 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
|
||||||
|
|
||||||
|
|
|
@ -145,9 +145,14 @@ subdirectories).
|
||||||
|
|
||||||
* addurl [url ...]
|
* addurl [url ...]
|
||||||
|
|
||||||
Downloads each url to a file, which is added to the annex.
|
Downloads each url to its own file, which is added to the annex.
|
||||||
|
|
||||||
To avoid immediately downloading the url, specify --fast
|
To avoid immediately downloading the url, specify --fast.
|
||||||
|
|
||||||
|
To specify what file the url is added to, specify --file. This changes
|
||||||
|
the behavior; now all the specified urls are recorded as alternate
|
||||||
|
locations from which the file can be downloaded. In this mode, addurl
|
||||||
|
can be used both to add new files, or to add urls to existing files.
|
||||||
|
|
||||||
# REPOSITORY SETUP COMMANDS
|
# REPOSITORY SETUP COMMANDS
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue