Work in progress
This commit is contained in:
parent
5634359408
commit
cac43c064c
@ -1,2 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
stty raw -echo -icanon isig
|
||||
/usr/bin/github-fast-env --interactive /usr/lib/ghe-fast-tools/ghe-fast-console.rb
|
||||
stty sane
|
||||
|
@ -134,7 +134,9 @@ end
|
||||
|
||||
def set_up_pseudoterminal(control_socket, pseudoterminal_path)
|
||||
$pseudoterminal_io = File.open(pseudoterminal_path, File::RDWR | File::NOCTTY)
|
||||
$pseudoterminal_io.raw!
|
||||
$pseudoterminal_io.sync = true
|
||||
#$pseudoterminal_io.raw!
|
||||
$pseudoterminal_io.cooked!
|
||||
|
||||
$original_stderr.puts " connecting to pseudoterminal #{pseudoterminal_path}"
|
||||
|
||||
@ -149,7 +151,7 @@ end
|
||||
|
||||
$original_stderr.puts "preloading common modules"
|
||||
|
||||
#load "/usr/lib/github-fast-env/preload.rb"
|
||||
load "/usr/lib/github-fast-env/preload.rb"
|
||||
|
||||
$original_stderr.puts "ready to serve requests"
|
||||
|
||||
@ -261,8 +263,10 @@ while true
|
||||
|
||||
$original_stderr.puts " finished handling request (#{process_id})"
|
||||
|
||||
if $pseudoterminal_io
|
||||
$pseudoterminal_io.close
|
||||
end
|
||||
end
|
||||
}
|
||||
|
||||
Process.detach(child_process)
|
||||
|
@ -112,6 +112,16 @@ Signal.trap("CONT") do
|
||||
Process.kill("CONT", 0)
|
||||
end
|
||||
|
||||
Signal.trap("WINCH") do
|
||||
if $pseudoterminal_master
|
||||
$pseudoterminal_master.winsize = $stdout.winsize
|
||||
end
|
||||
|
||||
if $remote_process_id
|
||||
Process.kill("WINCH", $remote_process_id)
|
||||
end
|
||||
end
|
||||
|
||||
def read_command
|
||||
ready_ios = IO.select([$control_socket], [], [], 10)
|
||||
|
||||
@ -171,11 +181,15 @@ if $options[:interactive]
|
||||
require "pty"
|
||||
|
||||
$pseudoterminal_master, pseudoterminal_client = PTY.open
|
||||
$pseudoterminal_master.raw!
|
||||
#$pseudoterminal_master.raw!
|
||||
$pseudoterminal_master.echo = false
|
||||
$pseudoterminal_master.sync = true
|
||||
$pseudoterminal_master.winsize = $stdout.winsize
|
||||
|
||||
log "info", "opened pseudoterminal at #{pseudoterminal_client.path}"
|
||||
|
||||
encoded_pseudoterminal_client_path = Base64.encode64(pseudoterminal_client.path).delete("\n")
|
||||
pseudoterminal_client.close
|
||||
|
||||
read_ios += [$stdin, $pseudoterminal_master]
|
||||
|
||||
@ -275,7 +289,7 @@ while read_ios.include?($control_socket) or read_ios.include?($pseudoterminal_ma
|
||||
log "warn", "received input from unknown stream"
|
||||
end
|
||||
rescue EOFError
|
||||
if ready_read_io == $control_socket
|
||||
if ready_read_io == $control_socket and $pseudoterminal_master
|
||||
$pseudoterminal_master.close_write
|
||||
pseudoterminal_master_closed = true
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user