class EY::CLI::UI::Prompter
Public Class Methods
add_answer(arg)
click to toggle source
# File lib/engineyard/cli/ui.rb, line 19 def self.add_answer(arg) @answers ||= [] @answers << arg end
agree(question, default)
click to toggle source
# File lib/engineyard/cli/ui.rb, line 58 def self.agree(question, default) if @mock @questions ||= [] @questions << question answer = @answers.shift answer == '' ? default : %w[y yes].include?(answer) else timeout_if_not_interactive do answer = highline.agree(question) {|q| q.default = default ? 'Y/n' : 'N/y' } case answer when 'Y/n' then true when 'N/y' then false else answer end end end end
ask(question, password = false, default = nil)
click to toggle source
# File lib/engineyard/cli/ui.rb, line 42 def self.ask(question, password = false, default = nil) if @mock @questions ||= [] @questions << question answer = @answers.shift (answer == '' && default) ? default : answer else timeout_if_not_interactive do highline.ask(question) do |q| q.echo = "*" if password q.default = default if default end.to_s end end end
enable_mock!()
click to toggle source
# File lib/engineyard/cli/ui.rb, line 28 def self.enable_mock! @questions = [] @answers = [] @mock = true end
highline()
click to toggle source
# File lib/engineyard/cli/ui.rb, line 34 def self.highline @highline ||= HighLine.new($stdin) end
interactive?()
click to toggle source
# File lib/engineyard/cli/ui.rb, line 38 def self.interactive? @mock || ($stdout && $stdout.tty?) end
questions()
click to toggle source
# File lib/engineyard/cli/ui.rb, line 24 def self.questions @questions end
timeout_if_not_interactive(&block)
click to toggle source
# File lib/engineyard/cli/ui.rb, line 76 def self.timeout_if_not_interactive(&block) if interactive? block.call else Timeout.timeout(2, &block) end end