Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell optpass applicative:使用来自选项定义的自定义错误消息生成使用信息_Haskell_Command Line Arguments - Fatal编程技术网

Haskell optpass applicative:使用来自选项定义的自定义错误消息生成使用信息

Haskell optpass applicative:使用来自选项定义的自定义错误消息生成使用信息,haskell,command-line-arguments,Haskell,Command Line Arguments,我正在使用存储命令行参数的构造函数SrvOpts填充Opts类型: main :: IO () main = join $ customExecParser cf $ info options (fullDesc <> header "header" <> footer "footer") where cf = defaultPrefs { prefShowHelpOnError=True } options :: Parser (IO (

我正在使用存储命令行参数的构造函数
SrvOpts
填充
Opts
类型:

main :: IO ()
main = join $ customExecParser cf $ info options
           (fullDesc <> header "header" <> footer "footer")
    where cf = defaultPrefs { prefShowHelpOnError=True }

options :: Parser (IO ())
options = subparser $
    command "serve" (info (handleServe <$> (SrvOpts
            <$> strOption [...]
main::IO()
main=join$customExecParser cf$info选项
(fullDesc页眉“页眉”页脚“页脚”)
其中cf=defaultPrefs{prefShowHelpOnError=True}
选项::解析器(IO())
选项=subparser$
命令“发球”(信息(手发球)(SrvOpts
选择[…]
函数
handleServe
获取数据,然后进行进一步验证


如何使用自定义错误消息和从
options
内部
handleServe
生成的正常optpass应用程序样式使用信息来终止程序?

可以使用
options.applicative.Extra
中的
parserFailure
功能来完成:

renderError :: Context -> String -> IO ()                                       
renderError c msg = handleParseResult . Failure $                               
                        parserFailure argPrefs argInfo (ErrorMsg msg) [c]

在当前版本0.12.0.1中,必须从
Options.Applicative.Internal
导入
Context
,这将发生变化。
Context
构造函数使用子parser和
ParserInfo
(handleServe…部分)用于呈现使用情况信息。

是否始终要终止程序?或者,如果用户使用了错误的参数或
-h
,是否只想显示使用情况/帮助信息?解析后,我将检查给定字符串的格式是否正确,并希望根据
选项
如果不是。参数处理/解析工作正常。如果要单独检查字符串的格式,可以通过定义自己的字符串并将其与
选项
一起使用来实现这一点(而不是使用
选项
)@ben james:好的,但是如果我有更复杂的检查,这些检查依赖于尚未解析的其他值,那该怎么办?难道没有办法从应用程序的
选项
定义之外呈现从
选项
生成的“标准错误+使用信息”吗?