class ConsoleFormatter

Attributes

verbose[R]

Public Class Methods

new(verbose, color: nil) click to toggle source
# 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

Public Instance Methods

ask(question) click to toggle source
# File lib/hiptest-publisher/formatters/console_formatter.rb, line 82
def ask(question)
  return unless tty?
  STDOUT.print "[#{colorize('?', :yellow)}] #{question}"
  return $stdin.gets.chomp.downcase.strip
end
colored?() click to toggle source
# File lib/hiptest-publisher/formatters/console_formatter.rb, line 88
def colored?
  @color
end
dump_error(error, message = nil) click to toggle source
# 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) click to toggle source
# File lib/hiptest-publisher/formatters/console_formatter.rb, line 25
def show_error(message)
  STDOUT.print colorize(message, :yellow)
end
show_failure(message) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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?
    return if IO.console.nil?
    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) click to toggle source
# 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

Private Instance Methods

colorize(txt, color) click to toggle source
# File lib/hiptest-publisher/formatters/console_formatter.rb, line 98
def colorize(txt, color)
  colored? ? txt.send(color) : txt
end
tty?() click to toggle source
# File lib/hiptest-publisher/formatters/console_formatter.rb, line 94
def tty?
  $stdout.tty?
end