Class: Aruba::CommandMonitor

Inherits:
Object
  • Object
show all
Defined in:
lib/aruba/platforms/command_monitor.rb

Overview

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

Defined Under Namespace

Classes: DefaultLastCommandStarted, DefaultLastCommandStopped

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(opts = {}) ⇒ CommandMonitor

Returns a new instance of CommandMonitor.



37
38
39
40
41
42
43
44
45
46
# 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

Instance Attribute Details

#last_command_startedObject

Returns the value of attribute last_command_started.



15
16
17
# File 'lib/aruba/platforms/command_monitor.rb', line 15

def last_command_started
  @last_command_started
end

#last_command_stoppedObject

Return the last command stopped



50
51
52
53
54
55
56
# 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

#registered_commandsObject (readonly)

Returns the value of attribute registered_commands.



15
16
17
# File 'lib/aruba/platforms/command_monitor.rb', line 15

def registered_commands
  @registered_commands
end

Instance Method Details

#all_outputString

Get stderr and stdout of all commands

Returns:

  • (String)

    The stderr and stdout of all command which have run before



160
161
162
# File 'lib/aruba/platforms/command_monitor.rb', line 160

def all_output
  all_stdout << all_stderr
end

#all_stderrString

Get stderr of all commands

Returns:

  • (String)

    The stderr of all command which have run before



146
147
148
149
150
151
152
153
154
# 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_stdoutString

Get stdout of all commands

Returns:

  • (String)

    The stdout of all command which have run before



132
133
134
135
136
137
138
139
140
# 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

#clearObject

Clear list of known commands



91
92
93
94
95
96
# File 'lib/aruba/platforms/command_monitor.rb', line 91

def clear
  registered_commands.each(&:terminate)
  registered_commands.clear

  self
end

#find(cmd) {|Command| ... } ⇒ Object

Find command

Yields:

  • (Command)

    This yields the found command



81
82
83
84
85
86
87
88
# 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) ⇒ Object

Deprecated.

Raises:

  • (ArgumentError)


207
208
209
210
211
212
# 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_exit_statusObject

Deprecated.


165
166
167
168
169
170
171
# 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_processesObject

Deprecated.


200
201
202
203
204
# 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) ⇒ Object

Deprecated.

Fetch output (stdout, stderr) from command

Parameters:

  • cmd (String)

    The command



103
104
105
106
# 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) ⇒ Object

Register command to monitor



215
216
217
218
219
# File 'lib/aruba/platforms/command_monitor.rb', line 215

def register_command(cmd)
  registered_commands << cmd

  self
end

#stderr_from(cmd) ⇒ Object

Deprecated.

Fetch stderr from command

Parameters:

  • cmd (String)

    The command



123
124
125
126
# 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) ⇒ Object

Deprecated.

Fetch stdout from command

Parameters:

  • cmd (String)

    The command



113
114
115
116
# 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) ⇒ Object

Deprecated.


174
175
176
177
# 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!Object

Deprecated.


185
186
187
188
189
# 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) ⇒ Object

Deprecated.


180
181
182
# File 'lib/aruba/platforms/command_monitor.rb', line 180

def terminate_process!(process)
  process.terminate
end

#terminate_processesObject

Deprecated.

Terminate all running processes



193
194
195
196
197
# 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