From 6b15ee068431ecb12e5c10f6fa78d3bb08abd28c Mon Sep 17 00:00:00 2001 From: Glenn Date: Fri, 20 Jan 2023 09:21:09 +0100 Subject: [PATCH] feat: handle interrupt signal --- src/main.cr | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main.cr b/src/main.cr index a8cc767..7160f6f 100644 --- a/src/main.cr +++ b/src/main.cr @@ -55,15 +55,17 @@ puts "docker_image = #{docker_image}" puts "action = #{action}" docker_name = "docmachine-#{basehash}" -docker_cid = %x{docker ps -f "name=#{docker_name} -q)}.strip +docker_cid = %x{docker ps -f "name=#{docker_name}" -q}.strip uid = %x{id -u}.strip gid = %x{id -g}.strip +puts "uid: #{uid}" +puts "cid: #{gid}" puts "docker_name: #{docker_name}" puts "docker_cid: #{docker_cid}" if !docker_cid.empty? - Process.run("docker", ["kill", docker_cid]) + Process.run("docker", ["kill", docker_name]) end docker_opts << "run" @@ -127,5 +129,12 @@ docker_opts << docker_image docker_opts << action puts docker_opts.inspect.colorize(:yellow) -process = Process.run("docker", docker_opts, output: STDOUT, error: STDERR) +process = Process.new("docker", docker_opts, output: STDOUT, error: STDERR) + +Signal::INT.trap do + STDERR.puts "Received CTRL-C" + process.signal(Signal::KILL) + Process.run("docker", ["kill", docker_name]) +end +process.wait