module Lorentz::Contract::Kernel
Public Instance Methods
system_line(cmd)
click to toggle source
# File lib/lorentz/contract/kernel.rb, line 50 def system_line(cmd) if result = system_lines(cmd) result.first&.chomp else result end end
system_lines(cmd)
click to toggle source
# File lib/lorentz/contract/kernel.rb, line 17 def system_lines(cmd) num_retries = 0 result_lines = [] begin result_lines = [] puts cmd Open3.popen2e(cmd) do |stdin, stdout, thread| while line=stdout.gets do puts(line) result_lines << line end exit_status = thread.value unless exit_status.success? result_lines = result_lines.reject! do |line| line.match /^\s+\d{3}:\s/ end.to_a err = SystemError.new(result_lines.inspect) err.message_list = result_lines raise err end end return result_lines.to_enum rescue SystemError => e if e.message_list.any?{|line|line.match(/Counter \d+ already used for contract/)} num_retries += 1 puts puts "Retry number: #{num_retries}" retry end raise e end end
system_operation_hash(cmd)
click to toggle source
# File lib/lorentz/contract/kernel.rb, line 58 def system_operation_hash(cmd) system_lines(cmd).find_operation_hash end