0

Ruby で Docopt を使用してコマンド オプションを解析しています。スクリプトの後半では、gets.chomp. 問題は、Docopt が で構文解析を行った後も、実行中のプログラムからのすべての引数が ARGF に残ってoptions = Docopt::docopt(doc)いることです。

ARGF をクリアしようとしましたがARGF.gets、何らかの理由で入力をコマンドとして実行しようとします。ARGF をクリアするか、別の入力方法を使用することが解決策になると思いますが、まだ何も見つかりません。Docopt を使用して Ruby で対話型のコマンド ライン入力を取得しようとしたのは私が初めてではないことを想像する必要があるため、答えがそこにあることを願っています。

それを望む人のためのいくつかのコード:

#!/usr/bin/ruby

require 'docopt'

doc=<<eos
Usage:
account_creator.rb --noldap                           [options]

Options:
-h, --help                  Show help page
-l, --ldap
-n, --noldap
-s SERVER                 With or without http[s]://, followed by port
--ad
--od
-d NUM
-u USER
-p PASS
-o OUTPUT-FILE             Default behavior is to append output to file if it exists
eos

options = {}
begin
  options = Docopt::docopt(doc)
rescue Docopt::Exit => e
  puts e.message
  exit 1
end

if options['-u']
  username = options['-u']
else
  while username.eql? '' or username == nil
    puts "Enter Username:"
    username = Kernel.gets.chomp.strip
  end
end
4

1 に答える 1