class Berkshelf::Cli::Runner

This is the main entry point for the CLI. It exposes the method {#execute!} to start the CLI.

@note the arity of {#initialize} and {#execute!} are extremely important for testing purposes. It

is a requirement to perform in-process testing with Aruba. In process testing is much faster
than spawning a new Ruby process for each test.

Public Class Methods

new(argv, stdin = STDIN, stdout = STDOUT, stderr = STDERR, kernel = Kernel) click to toggle source
# File lib/berkshelf/cli.rb, line 14
def initialize(argv, stdin = STDIN, stdout = STDOUT, stderr = STDERR, kernel = Kernel)
  @argv, @stdin, @stdout, @stderr, @kernel = argv, stdin, stdout, stderr, kernel
end

Public Instance Methods

execute!() click to toggle source
# File lib/berkshelf/cli.rb, line 18
def execute!
  $stdin  = @stdin
  $stdout = @stdout
  $stderr = @stderr

  Berkshelf::Cli.start(@argv)
  @kernel.exit(0)
rescue Berkshelf::BerkshelfError => e
  Berkshelf.ui.error e
  Berkshelf.ui.error "\t" + e.backtrace.join("\n\t") if ENV["BERKSHELF_DEBUG"]
  @kernel.exit(e.status_code)
rescue => e
  Berkshelf.ui.error "#{e.class} #{e}"
  Berkshelf.ui.error "\t" + e.backtrace.join("\n\t") if ENV["BERKSHELF_DEBUG"]
  @kernel.exit(47)
end