Haskell命令行参数处理库

Joh*_*n L 8 haskell command-line-arguments

我一直在使用cmdargs进行参数处理,这很棒.但是,我没有看到一个带有单个连字符的长选项名称的工具,例如-option1 -option2或更难以-optx相当于--opt=x.我需要保持与现有应用程序的兼容性,因此这些格式都是必需的.

System.Console.Getopt似乎也没有.任何人都可以提供如何使用cmdargs执行此操作的示例,或者建议一个支持此功能的替代库吗?

Dan*_*ner 9

你可以做的最简单的事情就是自己做一个快速的预处理过程.例如,如果您需要支持完全的三个选项-option1,-option2以及-optx,像这样的东西应该工作:

munge "-option1" = "--option1"
munge "-option2" = "--option2"
munge s | "-opt" `isPrefixOf` s = "--opt=" ++ drop 4 s
munge s = s

main = do
    realArgs <- getArgs
    withArgs (map munge realArgs) mainThatUsesCmdArgs
Run Code Online (Sandbox Code Playgroud)

如你所说,然后,帮助信息将不再提及具有这些简短形式的可能性.(不过这可能是件好事.)

如果你想要更多,你可能必须说服某人修改cmdargs.