class Cocaine::CommandLine

Attributes

logger[RW]
runner[RW]
exit_status[R]
runner[R]

Public Class Methods

environment() click to toggle source
# File lib/cocaine/command_line.rb, line 24
def environment
  @supplemental_environment ||= {}
end
fake!() click to toggle source
# File lib/cocaine/command_line.rb, line 32
def fake!
  @runner = FakeRunner.new
end
new(binary, params = "", options = {}) click to toggle source
# File lib/cocaine/command_line.rb, line 52
def initialize(binary, params = "", options = {})
  @binary            = binary.dup
  @params            = params.dup
  @options           = options.dup
  @runner            = @options.delete(:runner) || self.class.runner
  @logger            = @options.delete(:logger) || self.class.logger
  @swallow_stderr    = @options.delete(:swallow_stderr)
  @expected_outcodes = @options.delete(:expected_outcodes) || [0]
  @environment       = @options.delete(:environment) || {}
end
path() click to toggle source
# File lib/cocaine/command_line.rb, line 6
def path
  @supplemental_path
end
path=(supplemental_path) click to toggle source
# File lib/cocaine/command_line.rb, line 9
def path=(supplemental_path)
  @supplemental_path = supplemental_path
  @supplemental_environment ||= {}
  @supplemental_environment['PATH'] = [ENV['PATH'], *supplemental_path].join(File::PATH_SEPARATOR)
end
posix_spawn_available?() click to toggle source
# File lib/cocaine/command_line.rb, line 15
def posix_spawn_available?
  @posix_spawn_available ||= begin
    require 'posix/spawn'
    true
  rescue LoadError => e
    false
  end
end
unfake!() click to toggle source
# File lib/cocaine/command_line.rb, line 36
def unfake!
  @runner = nil
end

Public Instance Methods

command(interpolations = {}) click to toggle source
# File lib/cocaine/command_line.rb, line 63
def command(interpolations = {})
  cmd = []
  cmd << @binary
  cmd << interpolate(@params, interpolations)
  cmd << bit_bucket if @swallow_stderr
  cmd.join(" ").strip
end
run(interpolations = {}) click to toggle source
# File lib/cocaine/command_line.rb, line 71
def run(interpolations = {})
  output = ''
  begin
    full_command = command(interpolations)
    log("#{colored("Command")} :: #{full_command}")
    output = execute(full_command)
  rescue Errno::ENOENT
    raise Cocaine::CommandNotFoundError
  ensure
    @exit_status = $?.exitstatus
  end
  if $?.exitstatus == 127
    raise Cocaine::CommandNotFoundError
  end
  unless @expected_outcodes.include?($?.exitstatus)
    raise Cocaine::ExitStatusError, "Command '#{command}' returned #{$?.exitstatus}. Expected #{@expected_outcodes.join(", ")}"
  end
  output
end
unix?() click to toggle source
# File lib/cocaine/command_line.rb, line 91
def unix?
  RbConfig::CONFIG['host_os'] !~ %rmswin|mingw/
end