allow pathdepth to drop from the front or take from the end (negative)

This commit is contained in:
Joey Hess 2012-02-16 14:26:53 -04:00
parent c2245260b1
commit 346c934409
2 changed files with 7 additions and 7 deletions

View file

@ -90,13 +90,12 @@ url2file :: URI -> Maybe Int -> FilePath
url2file url pathdepth = case pathdepth of url2file url pathdepth = case pathdepth of
Nothing -> filesize $ escape fullurl Nothing -> filesize $ escape fullurl
Just depth Just depth
| depth > 0 -> filesize $ join "/" $ | depth > 0 -> frombits $ drop depth
fromend depth $ map escape $ | otherwise -> frombits $ reverse . take (negate depth) . reverse
filter (not . null) $ split "/" fullurl
| otherwise -> error "bad --pathdepth value"
where where
fullurl = uriRegName auth ++ uriPath url ++ uriQuery url fullurl = uriRegName auth ++ uriPath url ++ uriQuery url
frombits a = filesize $ join "/" $ a urlbits
urlbits = map escape $ filter (not . null) $ split "/" fullurl
auth = fromMaybe (error $ "bad url " ++ show url) $ uriAuthority url auth = fromMaybe (error $ "bad url " ++ show url) $ uriAuthority url
filesize = take 255 filesize = take 255
escape = replace "/" "_" . replace "?" "_" escape = replace "/" "_" . replace "?" "_"
fromend n = reverse . take n . reverse

View file

@ -150,9 +150,10 @@ subdirectories).
To avoid immediately downloading the url, specify --fast. To avoid immediately downloading the url, specify --fast.
Normally the filename is based on the full url, so will look like Normally the filename is based on the full url, so will look like
"www.example.com_subdir_bigfile". For a shorter filename, specify "www.example.com_dir_subdir_bigfile". For a shorter filename, specify
--pathdepth=N. For example, --pathdepth=2 will use "subdir/bigfile", --pathdepth=N. For example, --pathdepth=2 will use "subdir/bigfile",
while --parhdepth=1 will use "bigfile". while --pathdepth=3 will use "bigfile". It can also be negative;
--pathdepth=-2 will use the last two parts of the url.
Or, to directly specify what file the url is added to, specify --file. Or, to directly specify what file the url is added to, specify --file.
This changes the behavior; now all the specified urls are recorded as This changes the behavior; now all the specified urls are recorded as