如何使用GLI 2.0 ruby​​ gem接受ARGF数据?

时间:2012-09-06 15:46:26

标签: ruby command-line gli-gem

我使用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)

1 个答案:

答案 0 :(得分:2)

总结上述讨论:

GLI目前正在改变ARGV,所以ARGF应该在命令的action块内正常工作,即使你正在输入。但是,GLI确实需要某种命令运行,即使它覆盖了相关命令的默认值help