# File lib/tmuxinator/window.rb, line 7 def initialize(window_yaml, index, project) @name = !window_yaml.keys.first.nil? ? window_yaml.keys.first.shellescape : nil @root = nil @panes = [] @layout = nil @pre = nil @project = project @index = index value = window_yaml.values.first if value.is_a?(Hash) @layout = value["layout"] ? value["layout"].shellescape : nil @pre = value["pre"] if value["pre"] @root = value["root"] ? File.expand_path(value["root"]).shellescape : project.root? ? project.root : nil @panes = build_panes(value["panes"]) else @commands = build_commands(tmux_window_command_prefix, value) end end
# File lib/tmuxinator/window.rb, line 41 def build_commands(prefix, command_yml) if command_yml.is_a?(Array) command_yml.map do |command| "#{tmux_window_command_prefix} #{command.shellescape} C-m" if command end.compact elsif command_yml.is_a?(String) && !command_yml.empty? ["#{tmux_window_command_prefix} #{command_yml.shellescape} C-m"] else [] end end
# File lib/tmuxinator/window.rb, line 29 def build_panes(panes_yml) Array(panes_yml).map.with_index do |pane_yml, index| if pane_yml.is_a?(Hash) pane_yml.map do |name, commands| Tmuxinator::Pane.new(index, project, self, *commands) end else Tmuxinator::Pane.new(index, project, self, pane_yml) end end.flatten end
# File lib/tmuxinator/window.rb, line 65 def panes? panes.any? end
# File lib/tmuxinator/window.rb, line 53 def pre if @pre.is_a?(Array) @pre.join(" && ") elsif @pre.is_a?(String) @pre end end
# File lib/tmuxinator/window.rb, line 61 def root? !root.nil? end
# File lib/tmuxinator/window.rb, line 88 def tmux_layout_command "#{project.tmux} select-layout -t #{tmux_window_target} #{layout}" end
# File lib/tmuxinator/window.rb, line 83 def tmux_new_window_command path = root? ? "#{Tmuxinator::Config.default_path_option} #{root}" : nil "#{project.tmux} new-window #{path} -t #{tmux_window_target} -n #{name}" end
# File lib/tmuxinator/window.rb, line 73 def tmux_pre_window_command return unless project.pre_window "#{project.tmux} send-keys -t #{tmux_window_target} #{project.pre_window.shellescape} C-m" end
# File lib/tmuxinator/window.rb, line 92 def tmux_select_first_pane "#{project.tmux} select-pane -t #{tmux_window_target}.#{panes.first.index + project.base_index}" end
# File lib/tmuxinator/window.rb, line 79 def tmux_window_command_prefix "#{project.tmux} send-keys -t #{project.name}:#{index + project.base_index}" end
# File lib/tmuxinator/window.rb, line 69 def tmux_window_target "#{project.name}:#{index + project.base_index}" end