Class: ConsoleFormatter

Inherits:
Object
  • Object
show all
Defined in:
lib/hiptest-publisher/formatters/console_formatter.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(verbose, color: nil) ⇒ ConsoleFormatter

Returns a new instance of ConsoleFormatter.



8
9
10
11
12
13
# File 'lib/hiptest-publisher/formatters/console_formatter.rb', line 8

def initialize(verbose, color: nil)
  @verbose = verbose
  @color = color.nil? ? tty? : color
  @immediate_verbose = true
  @verbose_messages = []
end

Instance Attribute Details

#verboseObject (readonly)

Returns the value of attribute verbose.



6
7
8
# File 'lib/hiptest-publisher/formatters/console_formatter.rb', line 6

def verbose
  @verbose
end

Instance Method Details

#ask(question) ⇒ Object



81
82
83
84
85
# File 'lib/hiptest-publisher/formatters/console_formatter.rb', line 81

def ask(question)
  return unless tty?
  STDOUT.print "[#{colorize('?', :yellow)}] #{question}"
  return $stdin.gets.chomp.downcase.strip
end

#colored?Boolean

Returns:

  • (Boolean)


87
88
89
# File 'lib/hiptest-publisher/formatters/console_formatter.rb', line 87

def colored?
  @color
end

#dump_error(error, message = nil) ⇒ Object



15
16
17
18
19
20
21
22
23
# File 'lib/hiptest-publisher/formatters/console_formatter.rb', line 15

def dump_error(error, message = nil)
  return unless verbose
  puts colorize(message, :blue) if message
  line = "-" * 80
  puts colorize(line, :yellow)
  puts colorize("#{error.class.name}: #{error.message}", :red)
  puts colorize("#{error.backtrace.map {|l| "  #{l}\n"}.join}", :yellow)
  puts colorize(line, :yellow)
end

#show_error(message) ⇒ Object



25
26
27
# File 'lib/hiptest-publisher/formatters/console_formatter.rb', line 25

def show_error(message)
  STDOUT.print colorize(message, :yellow)
end

#show_failure(message) ⇒ Object



29
30
31
# File 'lib/hiptest-publisher/formatters/console_formatter.rb', line 29

def show_failure(message)
  STDOUT.print(colorize(message, :red))
end

#show_options(options, message = nil) ⇒ Object



33
34
35
36
37
38
# File 'lib/hiptest-publisher/formatters/console_formatter.rb', line 33

def show_options(options, message = nil)
  return unless verbose
  message ||= I18n.t(:verbose_header, version: hiptest_publisher_version)
  puts colorize(message, :yellow)
  options.each { |k, v| puts " - #{k}: #{v.inspect}" }
end

#show_status_message(message, status = nil) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/hiptest-publisher/formatters/console_formatter.rb', line 49

def show_status_message(message, status=nil)
  status_icon = " "
  output = STDOUT

  if status == :success
    status_icon = colorize("v", :green)
  elsif status == :warning
    status_icon = colorize("?", :yellow)
  elsif status == :failure
    status_icon = colorize("x", :red)
    output = STDERR
  end
  if status
    @immediate_verbose = true
    cursor_offset = ""
  else
    return unless tty?
    rows, columns = IO.console.winsize
    return if columns == 0
    @immediate_verbose = false
    vertical_offset = (4 + message.length) / columns
    cursor_offset = "\r\e[#{vertical_offset + 1}A"
  end

  output.print "[#{status_icon}] #{message}#{cursor_offset}\n"

  if @immediate_verbose && !@verbose_messages.empty?
    @verbose_messages.each { |message| show_verbose_message(message) }
    @verbose_messages.clear
  end
end

#show_verbose_message(message) ⇒ Object



40
41
42
43
44
45
46
47
# File 'lib/hiptest-publisher/formatters/console_formatter.rb', line 40

def show_verbose_message(message)
  return unless verbose
  if @immediate_verbose
    STDOUT.print "#{message}\n"
  else
    @verbose_messages << message
  end
end