class Gerrit::UI

Manages all interaction with the user.

Public Class Methods

new(input, output) click to toggle source

Creates a {UI} that mediates between the given input/output streams.

@param input [Gerrit::Input] @param output [Gerrit::Output]

# File lib/gerrit/ui.rb, line 15
def initialize(input, output)
  @input = input
  @output = output
  @pastel = Pastel.new
  @shell = TTY::Shell.new
end

Public Instance Methods

bold(*args, **kwargs) click to toggle source

Print output in bold face.

@param args [Array] @param kwargs [Hash]

# File lib/gerrit/ui.rb, line 44
def bold(*args, **kwargs)
  print(@pastel.bold(*args), **kwargs)
end
bold_error(*args, **kwargs) click to toggle source

Print the specified output in a bold face and color indicative of error.

@param args [Array] @param kwargs [Hash]

# File lib/gerrit/ui.rb, line 60
def bold_error(*args, **kwargs)
  print(@pastel.bold.red(*args), **kwargs)
end
error(args, **kwargs) click to toggle source

Print the specified output in a color indicative of error.

@param args [Array] @param kwargs [Hash]

# File lib/gerrit/ui.rb, line 52
def error(args, **kwargs)
  print(@pastel.red(*args), **kwargs)
end
info(*args, **kwargs) click to toggle source

Print the specified output in a color indicating information.

@param args [Array] @param kwargs [Hash]

# File lib/gerrit/ui.rb, line 84
def info(*args, **kwargs)
  print(@pastel.cyan(*args), **kwargs)
end
newline() click to toggle source

Print a blank line.

# File lib/gerrit/ui.rb, line 89
def newline
  print('')
end
print(output, newline: true) click to toggle source

Print the specified output.

@param output [String] @param newline [Boolean] whether to append a newline

spinner(*args, &block) click to toggle source

Execute a command with a spinner animation until it completes.

# File lib/gerrit/ui.rb, line 94
def spinner(*args, &block)
  spinner = TTY::Spinner.new(*args)
  spinner_thread = Thread.new do
    loop do
      sleep 0.1
      spinner.spin
    end
  end

  block.call
ensure
  spinner_thread.kill
  newline # Ensure next line of ouptut on separate line from spinner
end
success(*args, **kwargs) click to toggle source

Print the specified output in a color indicative of success.

@param args [Array] @param kwargs [Hash]

# File lib/gerrit/ui.rb, line 68
def success(*args, **kwargs)
  print(@pastel.green(*args), **kwargs)
end
table(options = {}, &block) click to toggle source

Prints a table.

Customize the table by passing a block and operating on the table object passed to that block to add rows and customize its appearance.

# File lib/gerrit/ui.rb, line 113
def table(options = {}, &block)
  t = TTY::Table.new(options)
  block.call(t)
  print(t.render(:unicode, options))
end
user_input() click to toggle source

Get user input, stripping extraneous whitespace.

@return [String, nil]

# File lib/gerrit/ui.rb, line 25
def user_input
  if input = @input.get
    input.strip
  end
end
warning(*args, **kwargs) click to toggle source

Print the specified output in a color indicative of a warning.

@param args [Array] @param kwargs [Hash]

# File lib/gerrit/ui.rb, line 76
def warning(*args, **kwargs)
  print(@pastel.yellow(*args), **kwargs)
end