Sha256: eb87e6ab272c1f5d38f257c6bcaf510b077a94d37bfadd439a5778cb98311396

Contents?: true

Size: 1.06 KB

Versions: 3

Compression:

Stored size: 1.06 KB

Contents

require 'open3'

module Percheron
  module Actions
    class ExecLocal

      include Base

      def initialize(unit, scripts, description)
        @unit = unit
        @scripts = scripts
        @description = description
      end

      def execute!
        results = []
        results << execute_scripts!
        results.compact.empty? ? nil : unit
      end

      private

        attr_reader :unit, :scripts, :description

        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

        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

    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
percheron-0.7.16 lib/percheron/actions/exec_local.rb
percheron-0.7.15 lib/percheron/actions/exec_local.rb
percheron-0.7.14 lib/percheron/actions/exec_local.rb