lib/paraduct/runner.rb in paraduct-1.0.0.beta6 vs lib/paraduct/runner.rb in paraduct-1.0.0

- old
+ new

@@ -23,11 +23,11 @@ # @param script [String, Array<String>] script file, script(s) # @return [String] stdout # @raise [Paraduct::Errors::ProcessError] command exited error status def perform(script) export_variables = @params.reverse_merge("PARADUCT_JOB_ID" => @job_id, "PARADUCT_JOB_NAME" => job_name) - variable_string = export_variables.map{ |key, value| %(export #{key}="#{value}";) }.join(" ") + variable_string = export_variables.map { |key, value| %(export #{key}="#{value}";) }.join(" ") Array.wrap(script).inject("") do |stdout, command| stdout << run_command("#{variable_string} #{command}") stdout end @@ -36,15 +36,15 @@ def job_dir Pathname(@base_job_dir).join(job_name) end def job_name - @params.map { |key, value| "#{key}_#{value}" }.join("_").gsub(%r([/ ]), "_") + @params.map { |key, value| "#{key}_#{value}" }.join("_").gsub(%r{[/ ]}, "_") end def formatted_params - @params.map{ |key, value| "#{key}=#{value}" }.join(", ") + @params.map { |key, value| "#{key}=#{value}" }.join(", ") end def logger unless @logger stdout_logger = Paraduct::ColoredLabelLogger.new(formatted_params) @@ -55,33 +55,33 @@ @logger end private - def run_command(command) - full_stdout = "" - exit_status = nil + def run_command(command) + full_stdout = "" + exit_status = nil - logger.info "run_command: #{command}" + logger.info "run_command: #{command}" - PTY.spawn(command) do |stdin, stdout, pid| - stdout.close_write - stdin.sync = true + PTY.spawn(command) do |stdin, stdout, pid| + stdout.close_write + stdin.sync = true - begin - stdin.each do |line| - line.strip! - logger.info line - full_stdout << "#{line}\n" + begin + stdin.each do |line| + line.strip! + logger.info line + full_stdout << "#{line}\n" + end + rescue Errno::EIO # rubocop:disable Lint/HandleExceptions + ensure + _, exit_status = Process.waitpid2(pid) end - rescue Errno::EIO - ensure - _, exit_status = Process.waitpid2(pid) end - end - raise Paraduct::Errors::ProcessError.new(full_stdout, exit_status) unless exit_status.success? + raise Paraduct::Errors::ProcessError.new(full_stdout, exit_status) unless exit_status.success? - full_stdout - end + full_stdout + end end end