Class: Danger::Interviewer

Inherits:
Object
  • Object
show all
Defined in:
lib/danger/commands/init_helpers/interviewer.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(cork_board) ⇒ Interviewer

Returns a new instance of Interviewer.


5
6
7
# File 'lib/danger/commands/init_helpers/interviewer.rb', line 5

def initialize(cork_board)
  @ui = cork_board
end

Instance Attribute Details

#no_delayObject

Returns the value of attribute no_delay


3
4
5
# File 'lib/danger/commands/init_helpers/interviewer.rb', line 3

def no_delay
  @no_delay
end

#no_waitingObject

Returns the value of attribute no_waiting


3
4
5
# File 'lib/danger/commands/init_helpers/interviewer.rb', line 3

def no_waiting
  @no_waiting
end

#uiObject

Returns the value of attribute ui


3
4
5
# File 'lib/danger/commands/init_helpers/interviewer.rb', line 3

def ui
  @ui
end

Instance Method Details

#ask(question) ⇒ Object


55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/danger/commands/init_helpers/interviewer.rb', line 55

def ask(question)
  answer = ""
  loop do
    ui.puts "\n#{question}?"

    show_prompt
    answer = STDIN.gets.chomp

    break if answer.empty?

    ui.print "\nYou need to provide an answer."
  end
  answer
end

#ask_with_answers(question, possible_answers) ⇒ Object


70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/danger/commands/init_helpers/interviewer.rb', line 70

def ask_with_answers(question, possible_answers)
  ui.print "\n#{question}? ["

  print_info = proc do
    possible_answers.each_with_index do |answer, i|
      the_answer = i.zero? ? answer.underline : answer
      ui.print " " + the_answer
      ui.print(" /") if i != possible_answers.length - 1
    end
    ui.print " ]\n"
  end
  print_info.call

  answer = ""

  loop do
    show_prompt
    answer = @no_waiting ? possible_answers[0].downcase : STDIN.gets.downcase.chomp

    answer = "yes" if answer == "y"
    answer = "no" if answer == "n"

    # default to first answer
    if answer == ""
      answer = possible_answers[0].downcase
      ui.puts "Using: " + answer.yellow
    end

    break if possible_answers.map(&:downcase).include? answer

    ui.print "\nPossible answers are ["
    print_info.call
  end

  answer
end

#green_bangObject


17
18
19
# File 'lib/danger/commands/init_helpers/interviewer.rb', line 17

def green_bang
  "! ".green
end

#header(title) ⇒ Object


29
30
31
32
33
# File 'lib/danger/commands/init_helpers/interviewer.rb', line 29

def header(title)
  say title.yellow
  say ""
  pause 0.6
end

35
36
37
# File 'lib/danger/commands/init_helpers/interviewer.rb', line 35

def link(url)
  say " -> " + url.underline + "\n"
end

#pause(time) ⇒ Object


39
40
41
# File 'lib/danger/commands/init_helpers/interviewer.rb', line 39

def pause(time)
  sleep(time) unless @no_waiting
end

#red_bangObject


21
22
23
# File 'lib/danger/commands/init_helpers/interviewer.rb', line 21

def red_bang
  "! ".red
end

#run_command(command, output_command = nil) ⇒ Object


49
50
51
52
53
# File 'lib/danger/commands/init_helpers/interviewer.rb', line 49

def run_command(command, output_command = nil)
  output_command ||= command
  ui.puts "  " + output_command.magenta
  system command
end

#say(output) ⇒ Object


25
26
27
# File 'lib/danger/commands/init_helpers/interviewer.rb', line 25

def say(output)
  ui.puts output
end

#show_promptObject


9
10
11
# File 'lib/danger/commands/init_helpers/interviewer.rb', line 9

def show_prompt
  ui.print "> ".bold.green
end

#wait_for_returnObject


43
44
45
46
47
# File 'lib/danger/commands/init_helpers/interviewer.rb', line 43

def wait_for_return
  STDOUT.flush
  STDIN.gets unless @no_delay
  ui.puts
end

#yellow_bangObject


13
14
15
# File 'lib/danger/commands/init_helpers/interviewer.rb', line 13

def yellow_bang
  "! ".yellow
end