Class: RunLoop::Xcrun
- Inherits:
-
Object
- Object
- RunLoop::Xcrun
- Includes:
- Encoding
- Defined in:
- lib/run_loop/xcrun.rb
Defined Under Namespace
Classes: Error, TimeoutError
Constant Summary collapse
- DEFAULT_OPTIONS =
Controls the behavior of Xcrun#run_command_in_context.
You can override these values if they do not work in your environment.
For cucumber users, the best place to override would be in your features/support/env.rb.
For example:
{ :timeout => 30, :log_cmd => false }
Instance Method Summary collapse
-
#run_command_in_context(args, options = {}) ⇒ Object
(also: #exec)
Aliased to #exec, which will be removed in 3.0.
Methods included from Encoding
Instance Method Details
#run_command_in_context(args, options = {}) ⇒ Object Also known as: exec
Aliased to #exec, which will be removed in 3.0
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/run_loop/xcrun.rb', line 30 def run_command_in_context(args, ={}) = DEFAULT_OPTIONS.merge() timeout = [:timeout] unless args.is_a?(Array) raise ArgumentError, "Expected args '#{args}' to be an Array, but found '#{args.class}'" end args.each do |arg| unless arg.is_a?(String) raise ArgumentError, %Q{Expected arg '#{arg}' to be a String, but found '#{arg.class}' IO.popen requires all arguments to be Strings. } end end cmd = "xcrun #{args.join(' ')}" # Don't see your log? # Commands are only logged when debugging. RunLoop.log_unix_cmd(cmd) if [:log_cmd] hash = {} begin start_time = Time.now command_output = CommandRunner.run(['xcrun'] + args, timeout: timeout) out = ensure_command_output_utf8(command_output[:out], cmd) process_status = command_output[:status] hash = { :out => out, :pid => process_status.pid, # nil if process was killed before completion :exit_status => process_status.exitstatus } rescue RunLoop::Encoding::UTF8Error => e raise e rescue => e elapsed = "%0.2f" % (Time.now - start_time) raise Error, %Q{Xcrun encountered an error after #{elapsed} seconds: #{e} executing this command: #{cmd} } end if hash[:exit_status].nil? elapsed = "%0.2f" % (Time.now - start_time) raise TimeoutError, %Q{Xcrun timed out after #{elapsed} seconds executing #{cmd} with a timeout of #{timeout} } end hash end |