class Aruba::CommandMonitor

The command monitor is part of the private API of Aruba.

@private

Attributes

announcer[R]
last_command_started[R]
registered_commands[R]

Public Class Methods

new(opts = {}) click to toggle source
# File lib/aruba/platforms/command_monitor.rb, line 37
def initialize(opts = {})
  @registered_commands = []
  @announcer = opts.fetch(:announcer)

  @last_command_stopped = DefaultLastCommandStopped.new
  @last_command_started = DefaultLastCommandStarted.new

rescue KeyError => e
  raise ArgumentError, e.message
end

Public Instance Methods

all_output() click to toggle source

Get stderr and stdout of all commands

@return [String]

The stderr and stdout of all command which have run before
# File lib/aruba/platforms/command_monitor.rb, line 160
def all_output
  all_stdout << all_stderr
end
all_stderr() click to toggle source

Get stderr of all commands

@return [String]

The stderr of all command which have run before
# File lib/aruba/platforms/command_monitor.rb, line 146
def all_stderr
  registered_commands.each(&:stop)

  if RUBY_VERSION < '1.9.3'
    registered_commands.inject("") { |a, e| a << e.stderr; a }
  else
    registered_commands.each_with_object("") { |e, a| a << e.stderr }
  end
end
all_stdout() click to toggle source

Get stdout of all commands

@return [String]

The stdout of all command which have run before
# File lib/aruba/platforms/command_monitor.rb, line 132
def all_stdout
  registered_commands.each(&:stop)

  if RUBY_VERSION < '1.9.3'
    registered_commands.inject("") { |a, e| a << e.stdout; a }
  else
    registered_commands.each_with_object("") { |e, a| a << e.stdout }
  end
end
clear() click to toggle source

Clear list of known commands

# File lib/aruba/platforms/command_monitor.rb, line 91
def clear
  registered_commands.each(&:terminate)
  registered_commands.clear

  self
end
find(cmd) click to toggle source

Find command

@yield [Command]

This yields the found command
# File lib/aruba/platforms/command_monitor.rb, line 81
def find(cmd)
  cmd = cmd.commandline if cmd.respond_to? :commandline
  command = registered_commands.reverse.find { |c| c.commandline == cmd }

  fail CommandNotFoundError, "No command named '#{cmd}' has been started" if command.nil?

  command
end
get_process(wanted) click to toggle source

@deprecated

# File lib/aruba/platforms/command_monitor.rb, line 207
def get_process(wanted)
  command = find(wanted)
  raise ArgumentError.new("No process named '#{wanted}' has been started") unless command

  command
end
last_command_started=(cmd) click to toggle source

Set last command started

@param [String] cmd

The commandline of the command
# File lib/aruba/platforms/command_monitor.rb, line 65
def last_command_started=(cmd)
  @last_command_started = find(cmd)
end
last_command_stopped() click to toggle source

Return the last command stopped

# File lib/aruba/platforms/command_monitor.rb, line 50
def last_command_stopped
  return @last_command_stopped unless @last_command_stopped.nil?

  registered_commands.each(&:stop)

  @last_command_stopped
end
last_command_stopped=(cmd) click to toggle source

Set last command stopped

@param [String] cmd

The commandline of the command
# File lib/aruba/platforms/command_monitor.rb, line 73
def last_command_stopped=(cmd)
  @last_command_stopped = find(cmd)
end
last_exit_status() click to toggle source

@deprecated

# File lib/aruba/platforms/command_monitor.rb, line 165
def last_exit_status
  Aruba.platform.deprecated('The use of "#last_exit_status" is deprecated. Use "last_command_(started|stopped).exit_status" instead')

  return @last_exit_status if @last_exit_status
  registered_commands.each(&:stop)
  @last_exit_status
end
only_processes() click to toggle source

@deprecated

# File lib/aruba/platforms/command_monitor.rb, line 200
def only_processes
  Aruba.platform.deprecated('The use of "#only_processes" is deprecated.')

  registered_commands
end
output_from(cmd) click to toggle source

@deprecated Fetch output (stdout, stderr) from command

@param [String] cmd

The command
# File lib/aruba/platforms/command_monitor.rb, line 103
def output_from(cmd)
  cmd = Utils.detect_ruby(cmd)
  find(cmd).output
end
register_command(cmd) click to toggle source

Register command to monitor

# File lib/aruba/platforms/command_monitor.rb, line 215
def register_command(cmd)
  registered_commands << cmd

  self
end
stderr_from(cmd) click to toggle source

@deprecated Fetch stderr from command

@param [String] cmd

The command
# File lib/aruba/platforms/command_monitor.rb, line 123
def stderr_from(cmd)
  cmd = Utils.detect_ruby(cmd)
  find(cmd).stderr
end
stdout_from(cmd) click to toggle source

@deprecated Fetch stdout from command

@param [String] cmd

The command
# File lib/aruba/platforms/command_monitor.rb, line 113
def stdout_from(cmd)
  cmd = Utils.detect_ruby(cmd)
  find(cmd).stdout
end
stop_process(process) click to toggle source

@deprecated

# File lib/aruba/platforms/command_monitor.rb, line 174
def stop_process(process)
  @last_command_stopped = process
  @last_exit_status     = process.stop(announcer)
end
stop_processes!() click to toggle source

@deprecated

# File lib/aruba/platforms/command_monitor.rb, line 185
def stop_processes!
  Aruba.platform.deprecated('The use of "#stop_processes!" is deprecated.')

  registered_commands.each(&:stop)
end
terminate_process!(process) click to toggle source

@deprecated

# File lib/aruba/platforms/command_monitor.rb, line 180
def terminate_process!(process)
  process.terminate
end
terminate_processes() click to toggle source

@deprecated Terminate all running processes

# File lib/aruba/platforms/command_monitor.rb, line 193
def terminate_processes
  Aruba.platform.deprecated('The use of "#terminate_processes" is deprecated.')

  registered_commands.each(&:terminate)
end