File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff 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
You can’t perform that action at this time.
0 commit comments