我一直在使用cmdargs进行参数处理,这很棒。但是,我没有看到带有单个连字符的长选项名称的工具,例如-option1 -option2
或更难-optx
,相当于--opt=x
。我需要保持与现有应用程序的兼容性,因此这些格式都是必需的。
System.Console.Getopt似乎也没有。任何人都可以提供如何使用cmdargs执行此操作的示例,或者建议一个支持此功能的替代库吗?
答案 0 :(得分: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
正如你所说的那样,帮助信息将不再提及拥有这些简短形式的可能性。 (但这可能是件好事。)
如果你想要更多,你可能必须说服某人修改cmdargs。