summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2022-01-03 11:08:14 -0800
committerJohn MacFarlane <jgm@berkeley.edu>2022-01-03 11:08:14 -0800
commitca7a3ed5ed31e0c5787926d7b775c8f57c5932a4 (patch)
tree33a22fb56faddb8e70968142d610461a21d024fb
parentcdfdfae4dd06c62631cbaf7c0fc6eefa7545a30b (diff)
Issue error with --list-extensions for invalid formats.
Cloess #7797.
-rw-r--r--src/Text/Pandoc/App/CommandLineOptions.hs26
1 files changed, 16 insertions, 10 deletions
diff --git a/src/Text/Pandoc/App/CommandLineOptions.hs b/src/Text/Pandoc/App/CommandLineOptions.hs
index f0dee64bc..17db2cb3b 100644
--- a/src/Text/Pandoc/App/CommandLineOptions.hs
+++ b/src/Text/Pandoc/App/CommandLineOptions.hs
@@ -843,16 +843,22 @@ options =
Nothing -> extensionsFromList extList
Just fmt -> getAllExtensions $ T.pack fmt
let formatName = maybe "markdown" T.pack arg
- let defExts = getDefaultExtensions formatName
- let showExt x =
- (if extensionEnabled x defExts
- then '+'
- else if extensionEnabled x allExts
- then '-'
- else ' ') : drop 4 (show x)
- mapM_ (UTF8.hPutStrLn stdout . T.pack . showExt)
- [ex | ex <- extList, extensionEnabled ex allExts]
- exitSuccess )
+ if formatName `notElem`
+ (map fst (readers :: [(Text, Reader PandocPure)]) ++
+ map fst (writers :: [(Text, Writer PandocPure)]))
+ then E.throwIO $ PandocOptionError $ formatName <>
+ " is not a recognized reader or writer format"
+ else do
+ let defExts = getDefaultExtensions formatName
+ let showExt x =
+ (if extensionEnabled x defExts
+ then '+'
+ else if extensionEnabled x allExts
+ then '-'
+ else ' ') : drop 4 (show x)
+ mapM_ (UTF8.hPutStrLn stdout . T.pack . showExt)
+ [ex | ex <- extList, extensionEnabled ex allExts]
+ exitSuccess )
"FORMAT")
""