我一直在使用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。
关于Haskell 命令行参数处理库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5679364/