class Crowbar::Client::Util::Runner

A wrapper around the Crowbar CLI for proper initialization

Attributes

argv[RW]
kernel[RW]
stderr[RW]
stdin[RW]
stdout[RW]

Public Class Methods

new( argv, stdin = STDIN, stdout = STDOUT, stderr = STDERR, kernel = Kernel ) click to toggle source
# File lib/crowbar/client/util/runner.rb, line 30
def initialize(
  argv,
  stdin = STDIN,
  stdout = STDOUT,
  stderr = STDERR,
  kernel = Kernel
)
  self.argv = argv
  self.stdin = stdin
  self.stdout = stdout
  self.stderr = stderr
  self.kernel = kernel
end

Public Instance Methods

execute!() click to toggle source
# File lib/crowbar/client/util/runner.rb, line 44
def execute!
  exit_code = begin
    $stderr = stderr
    $stdin = stdin
    $stdout = stdout

    App::Entry.start(argv)

    0
  rescue StandardError => e
    b = e.backtrace

    stderr.puts(
      "#{b.shift}: #{e.message} (#{e.class})"
    )

    stderr.puts(
      b.map do |s|
        "\tfrom #{s}"
      end.join("\n")
    )

    1
  rescue SystemExit => e
    e.status
  ensure
    $stderr = STDERR
    $stdin = STDIN
    $stdout = STDOUT
  end

  kernel.exit(exit_code)
end