我一直使用cmdargs进行参数处理,它非常好用。但是,我没有看到单个连字符的长选项名称功能,例如-option1 -option2
或更难的-optx
,它等同于--opt=x
。我需要与现有应用程序保持兼容性,因此这两种格式都是必需的。
System.Console.Getopt似乎也不支持这一点。有人能够提供如何使用cmdargs进行处理的示例,或者建议一个支持此功能的替代库吗?
我一直使用cmdargs进行参数处理,它非常好用。但是,我没有看到单个连字符的长选项名称功能,例如-option1 -option2
或更难的-optx
,它等同于--opt=x
。我需要与现有应用程序保持兼容性,因此这两种格式都是必需的。
System.Console.Getopt似乎也不支持这一点。有人能够提供如何使用cmdargs进行处理的示例,或者建议一个支持此功能的替代库吗?
可能最简单的方法是自己进行快速预处理。例如,如果您需要支持精确的三个选项 -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
正如你所说,帮助信息将不再提及具有这些简短形式的可能性。(也许这是一件好事。)
如果你想要更多,你可能需要说服某人修改cmdargs。