我使用GLI 2.0 gem为所有漂亮的命令行结构创建了我自己的gem。它工作正常,但我也想支持数据传输。
my_prog new some_file # this is ok already
some_process | my_prog # how do I add this?
在某个地方,我需要检查它是如何调用的(以某种方式),然后采取适当的行动。我简化了一点,但我现在的代码是在下面。
require 'rubygems'
require 'gli'
include GLI::App
desc 'My example'
command :new do |c|
desc 'Specify input file'
arg_name 'filename'
c.flag [:i,:input]
c.action do |global_options,options,args|
exit_now!("Input file must be specified") if options[:o].nil?
exit_now!("New failed") unless File.exists?(options[:o])
end
end
exit run(ARGV)
答案 0 :(得分:2)
总结上述讨论:
GLI目前正在改变ARGV
,所以ARGF
应该在命令的action
块内正常工作,即使你正在输入。但是,GLI确实需要某种命令运行,即使它覆盖了相关命令的默认值help
。