lib/vectory/system_call.rb in vectory-0.2.0 vs lib/vectory/system_call.rb in vectory-0.3.0
- old
+ new
@@ -1,13 +1,16 @@
require "open3"
module Vectory
class SystemCall
+ TIMEOUT = 60
+
attr_reader :status, :stdout, :stderr, :cmd
- def initialize(cmd)
+ def initialize(cmd, timeout = TIMEOUT)
@cmd = cmd
+ @timeout = timeout
end
def call
log_cmd(@cmd)
@@ -25,10 +28,16 @@
def log_cmd(cmd)
Vectory.ui.debug("Cmd: '#{cmd}'")
end
def execute(cmd)
- @stdout, @stderr, @status = Open3.capture3(cmd)
+ result = Utils.capture3_with_timeout(cmd,
+ timeout: @timeout,
+ kill_after: @timeout)
+ Vectory.ui.error(result.inspect)
+ @stdout = result[:stdout]
+ @stderr = result[:stderr]
+ @status = result[:status]
rescue Errno::ENOENT => e
raise SystemCallError, e.inspect
end
def log_result