3

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

1 回答 1

2

简单总结一下上面的讨论:

GLI 目前 mutates ARGV,因此即使您正在输入,也ARGF应该在命令块内正常工作action。但是,GLI 确实需要某种命令才能运行,即使它覆盖了help相关命令的默认值。

于 2012-09-07T14:18:57.600 回答