module Ferry::Configuration::Question

Attributes

default[R]
key[R]
options[R]

Public Class Methods

new(key, default, options = {}) click to toggle source
# File lib/ferry/configuration/question.rb, line 4
def initialize(key, default, options = {})
  @key, @default, @options = key, default, options
end

Public Instance Methods

call() click to toggle source
# File lib/ferry/configuration/question.rb, line 8
def call
  ask_question
  value_or_default
end

Private Instance Methods

ask_question() click to toggle source
# File lib/ferry/configuration/question.rb, line 16
def ask_question
  $stdout.print question
end
echo?() click to toggle source
# File lib/ferry/configuration/question.rb, line 48
def echo?
  (options || {}).fetch(:echo, true)
end
gets() click to toggle source
# File lib/ferry/configuration/question.rb, line 34
def gets
  if echo?
    $stdin.gets
  else
    $stdin.noecho(&:gets).tap{ $stdout.print "\n" }
  end
rescue Errno::EIO
  # when stdio gets closed
end
question() click to toggle source
# File lib/ferry/configuration/question.rb, line 44
def question
  I18n.t(:question, key: key, default_value: default, scope: :capistrano)
end
response() click to toggle source
# File lib/ferry/configuration/question.rb, line 28
def response
  return @response if defined? @response

  @response = (gets || "").chomp
end
value_or_default() click to toggle source
# File lib/ferry/configuration/question.rb, line 20
def value_or_default
  if response.empty?
    default
  else
    response
  end
end