ALlow multiple comma-separated files for --defaults.

This commit is contained in:
John MacFarlane 2019-11-01 10:14:30 -07:00
parent 1b69d5ed94
commit e96f3fd813
2 changed files with 10 additions and 8 deletions

View file

@ -356,11 +356,12 @@ header when requesting a document from a URL:
`slidy`, `slideous`, or `s5` directory
placed in this directory will override pandoc's normal defaults.
`-d` *FILE*, `--defaults=`*FILE*
`-d` *FILE*[,*FILE*,...], `--defaults=`*FILE*[,*FILE*,...]
: Specify a set of default option settings. *FILE* is a YAML
file whose fields correspond to command-line option
settings. All options for document conversion, including input
settings. (Multiple files may be specified, separated by
commas.) All options for document conversion, including input
and output files, can be set using a defaults file. The file will
be searched for first in the working directory, and then in
the `defaults` subdirectory of the user data directory

View file

@ -64,6 +64,7 @@ import Data.Text (Text)
import Text.DocTemplates (ToContext(toVal), Context(..))
import qualified Text.Pandoc.UTF8 as UTF8
import qualified Data.YAML as Y
import Data.List.Split (splitWhen)
parseOptions :: [OptDescr (Opt -> IO Opt)] -> Opt -> IO Opt
parseOptions options' defaults = do
@ -161,11 +162,8 @@ options =
, Option "d" ["defaults"]
(ReqArg
(\arg opt -> do
let fp' = if null (takeExtension arg)
then addExtension arg "yaml"
else arg
foldM applyDefaults opt [fp']
(\arg opt ->
foldM applyDefaults opt (splitWhen (==',') arg)
)
"FILE")
""
@ -982,7 +980,10 @@ splitField s =
-- | Apply defaults from --defaults file.
applyDefaults :: Opt -> FilePath -> IO Opt
applyDefaults opt fp = runIOorExplode $ do
applyDefaults opt filepath = runIOorExplode $ do
let fp = if null (takeExtension filepath)
then addExtension filepath "yaml"
else filepath
setVerbosity $ optVerbosity opt
dataDirs <- liftIO defaultUserDataDirs
let fps = case optDataDir opt of