class Percheron::Actions::ExecLocal

Attributes

description[R]
scripts[R]
unit[R]

Public Class Methods

new(unit, scripts, description) click to toggle source
# File lib/percheron/actions/exec_local.rb, line 8
def initialize(unit, scripts, description)
  @unit = unit
  @scripts = scripts
  @description = description
end

Public Instance Methods

execute!() click to toggle source
# File lib/percheron/actions/exec_local.rb, line 14
def execute!
  results = []
  results << execute_scripts!
  results.compact.empty? ? nil : unit
end

Private Instance Methods

execute_command!(command) click to toggle source
# File lib/percheron/actions/exec_local.rb, line 33
def execute_command!(command)
  $logger.info "Executing #{description} script '#{command}' locally"
  Open3.popen2e(command) do |_, stdout_stderr, _|
    while (line = stdout_stderr.gets)
      $logger.debug line.strip
    end
  end
end
execute_scripts!() click to toggle source
# File lib/percheron/actions/exec_local.rb, line 24
def execute_scripts!
  $logger.debug "Executing #{description} scripts '#{scripts.inspect}' locally"
  scripts.each do |script|
    in_working_directory(base_dir) do
      execute_command!('/bin/sh -x %s 2>&1' % [ Pathname.new(File.expand_path(script)) ])
    end
  end
end