Skip to content

Commit f9f4b31

Browse files
author
Seth Falcon
committed
Merge branch 'CHEF-1937'
2 parents 1b74ac2 + 70d2076 commit f9f4b31

1 file changed

Lines changed: 22 additions & 8 deletions

File tree

chef/lib/chef/knife/ssh.rb

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -231,17 +231,31 @@ def screen
231231
end
232232

233233
def tmux
234+
ssh_dest = lambda do |server|
235+
prefix = server.user ? "#{server.user}@" : ""
236+
"'ssh #{prefix}#{server.host}'"
237+
end
238+
239+
new_window_cmds = lambda do
240+
if session.servers_for.size > 1
241+
[""] + session.servers_for[1..-1].map do |server|
242+
"new-window -a -n '#{server.host}' #{ssh_dest.call(server)}"
243+
end
244+
else
245+
[]
246+
end.join(" \\; ")
247+
end
248+
249+
tmux_name = "'knife ssh #{@name_args[0]}'"
234250
begin
235-
Chef::Mixin::Command.run_command(:command => "tmux new-session -d -s 'knife'")
251+
server = session.servers_for.first
252+
cmd = ["tmux new-session -d -s #{tmux_name}",
253+
"-n '#{server.host}'", ssh_dest.call(server),
254+
new_window_cmds.call].join(" ")
255+
Chef::Mixin::Command.run_command(:command => cmd)
256+
exec("tmux attach-session -t #{tmux_name}")
236257
rescue Chef::Exceptions::Exec
237258
end
238-
session.servers_for.each do |server|
239-
begin
240-
Chef::Mixin::Command.run_command(:command => "tmux new-window -d -n '#{server.host}' -t 'knife' 'ssh #{server.user ? "#{server.user}@#{server.host}" : server.host}'")
241-
rescue Chef::Exceptions::Exec
242-
end
243-
end
244-
exec("tmux attach-session -t knife")
245259
end
246260

247261
def macterm

0 commit comments

Comments
 (0)