class Pult::Executor

Constants

NOEXEC

Attributes

runner[R]

Public Class Methods

new(command, dir, params={}) click to toggle source
# File lib/pult/executor.rb, line 25
def initialize command, dir, params={}
  @command  = command
  @dir      = dir
  @params   = params.stringify_keys.transform_values {|v| v.to_s }

  @runner   = { info: NOEXEC }
end
run!(*args) click to toggle source
# File lib/pult/executor.rb, line 15
def self.run! *args
  runner = Pult::Executor.new(*args)
  runner.run!
  runner.runner
end
run_job!(*args) click to toggle source
# File lib/pult/executor.rb, line 21
def self.run_job! *args
  Job.perform_later(*args)
end

Public Instance Methods

run!() click to toggle source
# File lib/pult/executor.rb, line 33
def run!
  if @command && @dir && @params
    execute!
  end
end

Private Instance Methods

execute!() click to toggle source
# File lib/pult/executor.rb, line 41
def execute!
  if screen = @params.delete("screen")
    execute_in_screen! screen
  else
    execute_here!
  end
end
execute_here!() click to toggle source
# File lib/pult/executor.rb, line 49
def execute_here!
  params = [ @params, @command, chdir: @dir ]

  with_env :default do
    Open3.popen3( *params ) do |stdin, stdout, stderr, thr|
      @runner = {
        stdout: stdout.read,
        stderr: stderr.read,
        info:   thr.value
      }
    end
  end
end
execute_in_screen!(screen) click to toggle source
# File lib/pult/executor.rb, line 63
def execute_in_screen! screen
  args = {
    screen:   screen,
    env:      ENV_DEFAULT,
    params:   @params,
    command:  @command
  }

  @runner = Screener.run! args
end