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