diff --git a/MANUAL.txt b/MANUAL.txt index f7373b4c4..25f76b9aa 100644 --- a/MANUAL.txt +++ b/MANUAL.txt @@ -606,14 +606,16 @@ header when requesting a document from a URL: `--metadata-file=`*FILE* -: Read metadata from the supplied YAML (or JSON) file. This option can be used - with every input format, but string scalars in the YAML file will always be - parsed as Markdown. Generally, the input will be handled the same as in - [YAML metadata blocks][Extension: `yaml_metadata_block`]. This option can be - used repeatedly to include multiple metadata files; values in files specified - first will be preferred over those specified in later files. Metadata values - specified inside the document, or by using `-M`, overwrite values specified - with this option. +: Read metadata from the supplied YAML (or JSON) file. This + option can be used with every input format, but string scalars + in the YAML file will always be parsed as Markdown. Generally, + the input will be handled the same as in [YAML metadata + blocks][Extension: `yaml_metadata_block`]. This option can be + used repeatedly to include multiple metadata files; values in + files specified later on the command line will be preferred + over those specified in earlier files. Metadata values + specified inside the document, or by using `-M`, overwrite + values specified with this option. `-p`, `--preserve-tabs` diff --git a/src/Text/Pandoc/App.hs b/src/Text/Pandoc/App.hs index ed5963f1a..f3d342ebf 100644 --- a/src/Text/Pandoc/App.hs +++ b/src/Text/Pandoc/App.hs @@ -231,6 +231,10 @@ convertWithOpts opts = do [] -> return mempty paths -> mapM readFileLazy paths >>= mapM (yamlToMeta readerOpts) >>= return . (foldr1 (<>)) + -- Note: this list is in reverse order from the order on the + -- command line. So this code ensures that metadata files + -- specified later in the command line take precedence over + -- those specified earlier. let transforms = (case optShiftHeadingLevelBy opts of 0 -> id diff --git a/src/Text/Pandoc/App/CommandLineOptions.hs b/src/Text/Pandoc/App/CommandLineOptions.hs index f9f825a44..a7b20a6e3 100644 --- a/src/Text/Pandoc/App/CommandLineOptions.hs +++ b/src/Text/Pandoc/App/CommandLineOptions.hs @@ -209,7 +209,7 @@ options = , Option "" ["metadata-file"] (ReqArg (\arg opt -> return opt{ optMetadataFile = - (optMetadataFile opt) <> [normalizePath arg] }) + normalizePath arg : optMetadataFile opt }) "FILE") "" diff --git a/test/command/5700-metadata-file-1.yml b/test/command/5700-metadata-file-1.yml index df64e99c5..8289c392b 100644 --- a/test/command/5700-metadata-file-1.yml +++ b/test/command/5700-metadata-file-1.yml @@ -1 +1 @@ -title: Multiple metadata files test +title: This title should be overridden by 5700-metadta-file-2.yml diff --git a/test/command/5700-metadata-file-2.yml b/test/command/5700-metadata-file-2.yml index e865ed55d..1d5510e07 100644 --- a/test/command/5700-metadata-file-2.yml +++ b/test/command/5700-metadata-file-2.yml @@ -1,2 +1,2 @@ -title: This title should be overridden by 5700-metadta-file-2.yml +title: Multiple metadata files test desc: Both of these files should be loaded.