class ForemanTasksCore::Runner::CommandRunner

Public Instance Methods

close() click to toggle source
# File lib/foreman_tasks_core/runner/command_runner.rb, line 26
def close
  close_io
end
initialize_command(*command) click to toggle source
# File lib/foreman_tasks_core/runner/command_runner.rb, line 7
def initialize_command(*command)
  @command_out, @command_in, @command_pid = PTY.spawn(*command)
end
refresh() click to toggle source
# File lib/foreman_tasks_core/runner/command_runner.rb, line 11
def refresh
  return if @command_out.nil?
  ready_outputs, * = IO.select([@command_out], nil, nil, 0.1)
  if ready_outputs
    if @command_out.nread > 0
      lines = @command_out.read_nonblock(@command_out.nread)
    else
      close_io
      Process.wait(@command_pid)
      publish_exit_status($CHILD_STATUS.exitstatus)
    end
    publish_data(lines, 'stdout') if lines && !lines.empty?
  end
end

Private Instance Methods

close_io() click to toggle source
# File lib/foreman_tasks_core/runner/command_runner.rb, line 32
def close_io
  @command_out.close if @command_out && !@command_out.closed?
  @command_out = nil

  @command_in.close if @command_in && !@command_in.closed?
  @command_in = nil
end