Allow --resource-path to accumulate.

Previously, if `--resource-path` were used multiple times, the last
resource path would replace the others.

With this change, each time `--resource-path` is used, it prepends
the specified path components to the existing resource path.

Similarly, when `resource-path` is specified in a defaults file,
the paths provided will be prepended to the existing resource
path.

This change also allows one to avoid using the OS-specific path
separator; instead, one can simply use `--resource-path`
a number of times with single paths. This form of command
will not have an OS-dependent behavior.

This change facilitates the use of multiple, small defaults
files: each can specify a directory containing its own
resources without clobbering the resource paths set by
the others.

Closes #6152.
This commit is contained in:
John MacFarlane 2021-03-06 10:32:51 -08:00
parent 26524246d0
commit 735a69de6b
3 changed files with 9 additions and 2 deletions

View file

@ -891,6 +891,11 @@ header when requesting a document from a URL:
will not be searched. For example:
`--resource-path=.:test` will search the working directory
and the `test` subdirectory, in that order.
This option can be used repeatedly. Search path components
that come later on the command line will be searched before
those that come earlier, so
`--resource-path foo:bar --resource-path baz:bim` is
equivalent to `--resource-path baz:bim:foo:bar`.
`--request-header=`*NAME*`:`*VAL*

View file

@ -288,7 +288,8 @@ options =
, Option "" ["resource-path"]
(ReqArg
(\arg opt -> return opt { optResourcePath =
splitSearchPath arg })
splitSearchPath arg ++
optResourcePath opt })
"SEARCHPATH")
"" -- "Paths to search for images and other resources"

View file

@ -583,7 +583,8 @@ doOpt (k',v) = do
optIncludeInHeader o <> [unpack x] }))
"resource-path" ->
parseYAML v >>= \x ->
return (\o -> o{ optResourcePath = map unpack x })
return (\o -> o{ optResourcePath = map unpack x <>
optResourcePath o })
"request-headers" ->
parseYAML v >>= \x ->
return (\o -> o{ optRequestHeaders = x })