我目前在Python脚本,但我想尝试红宝石有几个原因。 我已经看了很多示例代码和阅读了大量文档的过去一周。 关注我的一点是缺乏适当的命令行参数解析库中的Ruby。 红宝石的专家,不要生我的气 - 也许我不知道。 这就是为什么我在这里。
在Python中,我习惯使用argparse
这在我看来简直是完美的(也许我的需求)。 但不幸的是, OptionParser
不允许的灵活性和功能argparse
一样。
我专门找在现在以下限制:
我如何相互排斥的选项列表 ? 例如,对于一个非常小的选项列表一个名为程序
test
。usage: test [-h] [-a | -b | -c] [-d] [filename]
我可以编写一些代码:
# implement a ---------------------------------------------- opts.on( "-a", "--alpha", "implement alpha") do #... end
等等。 但后来,我已经没有办法让
a
,b
和c
相互排斥的,除非我那些代码的置换,并做一些错误处理。 对于如test -ab #should through an error
在Python,我可以在一个非常简单的方法做到这一点:
# create an command line argument parser object cmd_line_parser = argparse.ArgumentParser() # create a mutually exclusive group cmd_line_group = cmd_line_parser.add_mutually_exclusive_group()
其次,我没有配对的方式
-d
与-a
,除非我专门为这个置换编写代码。 疯了吧。我已经写的
[OPTION]
列出自己; 我没有办法知道如果我错了或权利,除非我做了所有可能的输入排列一个黑箱测试,并将它们映射到黑盒列表。此外,必须的参数需要再次使用特殊的代码来处理。
有一个简单的使用处理这些约束optparse
或其他图书馆在Ruby中?