独自のスイッチを定義するライブラリを使用し、OptionParser
オブジェクトを渡して地雷を追加できるようにします。ただし、ユーザーを混乱させるため、削除したいスイッチが追加されます。
本質的に、これを元に戻したいと思います(サードパーティであるため、コード行を削除することに頼ることはありません):
opts.on("-p", "--port PORT", Integer, "Specify port", "(default: #{options[:port]})") do |v|
options[:port] = v
end
remove
クラスのコードを調べてみましたが、メカニズムが見つかりませんでした。そこで、メタプログラミングでハッキングする前に聞いてみようと思いました。
編集- メタプログラミングの方法 (vey hacky ..):
class OptionParser
attr_accessor :stack
end
...
opts.stack[2].long.reject! { |k| k == "port" }
opts.stack[2].short.reject! { |k| k == "p" }
...