class Minipack::CommandRunner
Public Class Methods
new(env, command, chdir: '.', logger: nil, watcher: nil)
click to toggle source
# File lib/minipack/command_runner.rb, line 10 def initialize(env, command, chdir: '.', logger: nil, watcher: nil) @env = env @command = command @chdir = chdir @logger = logger || Logger.new(nil) @watcher = watcher end
Public Instance Methods
run()
click to toggle source
# File lib/minipack/command_runner.rb, line 18 def run run! rescue UnsuccessfulError false end
run!()
click to toggle source
# File lib/minipack/command_runner.rb, line 24 def run! @logger.info "Start executing #{@command}, within #{@chdir}" return run_command if @watcher.nil? if @watcher.stale? run_command.tap do |success| @watcher.record_digest if success end else @logger.info 'Skipped because no file changes' true end end
Private Instance Methods
run_command()
click to toggle source
# File lib/minipack/command_runner.rb, line 41 def run_command stdout, stderr, status = Open3.capture3( @env, @command, chdir: @chdir, ) if status.success? @logger.info "Executed successfully" @logger.error "#{stderr}" unless stderr.empty? else @logger.error "Failed to execute:\n#{stderr}" end status.success? || raise(UnsuccessfulError, "Failed to execute #{@command}, exit:#{status.exitstatus}, stdout:#{stdout}, stderr:#{stderr}") end