From 735a69de6b94e32ee9aceb44a893de4067f24354 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Sat, 6 Mar 2021 10:32:51 -0800 Subject: [PATCH] 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. --- MANUAL.txt | 5 +++++ src/Text/Pandoc/App/CommandLineOptions.hs | 3 ++- src/Text/Pandoc/App/Opt.hs | 3 ++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/MANUAL.txt b/MANUAL.txt index 8e98ee1eb..a5036b361 100644 --- a/MANUAL.txt +++ b/MANUAL.txt @@ -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* diff --git a/src/Text/Pandoc/App/CommandLineOptions.hs b/src/Text/Pandoc/App/CommandLineOptions.hs index ac92db0ae..b4483f756 100644 --- a/src/Text/Pandoc/App/CommandLineOptions.hs +++ b/src/Text/Pandoc/App/CommandLineOptions.hs @@ -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" diff --git a/src/Text/Pandoc/App/Opt.hs b/src/Text/Pandoc/App/Opt.hs index d09a6afc0..e5aaec9c5 100644 --- a/src/Text/Pandoc/App/Opt.hs +++ b/src/Text/Pandoc/App/Opt.hs @@ -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 })