class Proclib::SshSession

Attributes

ssh_opts[R]

Public Class Methods

new(ssh_opts) click to toggle source
# File lib/proclib/ssh_session.rb, line 5
def initialize(ssh_opts)
  @ssh_opts = ssh_opts.clone
end

Public Instance Methods

run(cmd, tag: nil, log_to_console: false, capture_output: true, env: {}, on_output: nil, cwd: nil, stdin: nil, ssh: nil ) click to toggle source
# File lib/proclib/ssh_session.rb, line 9
def run(cmd,
  tag: nil,
  log_to_console: false,
  capture_output: true,
  env: {},
  on_output: nil,
  cwd: nil,
  stdin: nil,
  ssh: nil
)

  inv = Invocation.new(cmd,
    tag: tag,
    env: env,
    ssh: session,
    stdin: stdin,
    cwd: cwd)

  executor = Executor.new(inv.commands,
    log_to_console: log_to_console,
    cache_output: capture_output
  ).tap do |ex|
    ex.on_output(&on_output) unless on_output.nil?
  end

  executor.run_sync
rescue Invocation::Invalid => e
  raise ArgumentError, e.message
end

Private Instance Methods

session() click to toggle source
# File lib/proclib/ssh_session.rb, line 45
def session
  @session ||= Net::SSH.start(*ssh_params, ssh_opts)
end
ssh_params() click to toggle source
# File lib/proclib/ssh_session.rb, line 41
def ssh_params
  %i(host user).map {|i| ssh_opts.delete(i)}.compact
end