#!/usr/bin/env ruby require 'pty' require 'readline' STDOUT.sync = true bin = "#{Gem.bin_path('voltos', 'voltos')}-cli" status = PTY.spawn(bin, *ARGV) do |stdout, stdin, pid| stdout.sync = true Thread.new do loop do STDOUT.print stdout.getc end end Thread.new do loop do input = Readline.readline("", true) if input.nil? stdout.flush stdout.close stdin.close end stdin.puts input.strip end end begin Process::waitpid(pid) rescue nil while out = stdout.getc do STDOUT.print out end rescue SystemExit, Interrupt Process.kill('INT', pid) retry rescue EOFError puts "Ctrl-D" end end exit(status.to_i)