Sha256: 136075f834f70eef1939785457ca979d844ce33916852be9814416f8e9c90a03
Contents?: true
Size: 1.14 KB
Versions: 2
Compression:
Stored size: 1.14 KB
Contents
module Mina class Runner class Pretty include Mina::Helpers::Output attr_reader :script, :coathooks def initialize(script) @script = Shellwords.shellsplit(script) @coathooks = 0 end def run status = Open4.popen4(*script) do |pid, _stdin, stdout, stderr| # Handle `^C`. trap('INT') { handle_sigint(pid) } stdout_thread = Thread.new do while (line = stdout.gets) print_line(line) end end stderr_thread = Thread.new do while (line = stderr.gets) print_stderr(line) end end stdout_thread.join stderr_thread.join end status.exitstatus end private def handle_sigint(pid) puts '' if coathooks > 1 print_status 'Mina: SIGINT received again. Force quitting...' Process.kill 'KILL', pid else print_status 'Mina: SIGINT received.' Process.kill 'TERM', pid end @coathooks += 1 end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
mina-1.0.0.beta2 | lib/mina/runner/pretty.rb |
mina-1.0.0.beta1 | lib/mina/runner/pretty.rb |