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は現在変更さARGVれているため、パイプを使用している場合でも、コマンドARGFのブロック内で正常に機能するはずactionです。ただし、GLIは、問題のコマンドのデフォルトをオーバーライドしている場合でも、実行するために何らかのコマンドを必要としますhelp

于 2012-09-07T14:18:57.600 に答える