Class: GemInstaller::EnhancedStreamUI

Inherits:
Gem::StreamUI
  • Object
show all
Defined in:
lib/geminstaller/enhanced_stream_ui.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeEnhancedStreamUI

Returns a new instance of EnhancedStreamUI.



6
7
8
# File 'lib/geminstaller/enhanced_stream_ui.rb', line 6

def initialize()
  # override default constructor to have no args
end

Instance Attribute Details

#errs=(value) ⇒ Object (writeonly)

Sets the attribute errs

Parameters:

  • value

    the value to set the attribute errs to.



3
4
5
# File 'lib/geminstaller/enhanced_stream_ui.rb', line 3

def errs=(value)
  @errs = value
end

#gem_interaction_handler=(value) ⇒ Object (writeonly)

Sets the attribute gem_interaction_handler

Parameters:

  • value

    the value to set the attribute gem_interaction_handler to.



4
5
6
# File 'lib/geminstaller/enhanced_stream_ui.rb', line 4

def gem_interaction_handler=(value)
  @gem_interaction_handler = value
end

#outs=(value) ⇒ Object (writeonly)

Sets the attribute outs

Parameters:

  • value

    the value to set the attribute outs to.



3
4
5
# File 'lib/geminstaller/enhanced_stream_ui.rb', line 3

def outs=(value)
  @outs = value
end

Instance Method Details

#alert_error(statement, question = nil) ⇒ Object



51
52
53
54
55
56
57
58
59
# File 'lib/geminstaller/enhanced_stream_ui.rb', line 51

def alert_error(statement, question=nil)
  # if alert_error got called due to a GemInstaller::UnexpectedPromptError, re-throw it
  last_exception = $!
  if last_exception.class == GemInstaller::UnauthorizedDependencyPromptError || last_exception.class == GemInstaller::RubyGemsExit
    raise last_exception
  end
  # otherwise let alert_error continue normally...
  super(statement, question)
end

#ask(question) ⇒ Object



24
25
26
# File 'lib/geminstaller/enhanced_stream_ui.rb', line 24

def ask(question)
  raise_unexpected_prompt_error(question)
end

#ask_yes_no(question, default = nil) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/geminstaller/enhanced_stream_ui.rb', line 10

def ask_yes_no(question, default=nil)
  if GemInstaller::RubyGemsVersionChecker.matches?('<=0.9.4')
    # Using defaults, we expect no interactive prompts RubyGems >= 0.9.5
    begin
      @gem_interaction_handler.handle_ask_yes_no(question)
    rescue Exception => e
      @outs.print(question)
      @outs.flush
      raise e
    end
  end
  raise_unexpected_prompt_error(question)
end

#choose_from_list(question, list) ⇒ Object



28
29
30
31
32
33
34
35
36
37
# File 'lib/geminstaller/enhanced_stream_ui.rb', line 28

def choose_from_list(question, list)
  if GemInstaller::RubyGemsVersionChecker.matches?('<=0.9.4')
    # Using defaults, we expect no interactive prompts RubyGems >= 0.9.5
    @gem_interaction_handler.handle_choose_from_list(question, list)
  else
    list_string = list.join("\n")
    question_and_list = "#{question}\n#{list_string}"
    raise_unexpected_prompt_error(question_and_list)
  end
end

#terminate_interaction(status = 0) ⇒ Object



45
46
47
48
# File 'lib/geminstaller/enhanced_stream_ui.rb', line 45

def terminate_interaction(status=0)
  raise_error(status) unless status == 0
  raise GemInstaller::RubyGemsExit.new(status)
end

#terminate_interaction!(status = -1)) ⇒ Object

explicit exit in terminate_interation was removed after 1.0.1



41
42
43
# File 'lib/geminstaller/enhanced_stream_ui.rb', line 41

def terminate_interaction!(status=-1)
  raise_error(status)
end