class FortMux::Config

Public Class Methods

new(config_file_path) click to toggle source
# File lib/FortMux.rb, line 9
def initialize config_file_path
  @file = config_file_path
  @yml = YAML::load(File.open(@file))
end

Public Instance Methods

load() click to toggle source
# File lib/FortMux.rb, line 13
def load
  msg = StringIO.open do |sio|
    sio.write "=== #{@file}\n"
    File.open @file do |f|
      sio.write f.read
    end
    sio.write "\n=== yml\n"
    PP.pp @yml,sio
    sio.string
  end
  FortMux::Log::logger msg

  cmd_out = `tmux start-server` # Assuming no harm if server is already running
  tmux_status  = Status.new
  unless @yml.has_key? "sessions"
    puts "No sessions to load"
    return
  end
  @yml["sessions"].each do |session|
    window_count = tmux_status.window_count session["name"]
    session["windows"].each do |window|
      if tmux_status.find session["name"], window["name"]
        puts "Window #{session['name']}:#{window['name']} already loaded"
      else
        window_count += 1
        if tmux_status.find session["name"]
          cmd_out = `tmux new-window -d -t#{session["name"]}:#{window_count} -n #{window["name"]}`
        else
          cmd_out = `tmux new-session -d -n #{window["name"]} -s #{session["name"]}`
        end
        puts "  window: #{window["name"]}"
        window["commands"].each do |command|
          cmd_out = %x[tmux send-keys -t#{session["name"]}:#{window["name"]}.0 '#{command}' C-m]
        end
        pane_count = 0
        window["panes"].each do |pane|
          pane_count += 1
          puts "  tmux split-window #{pane["options"]} -t#{session["name"]}:#{window["name"]}"
          cmd_out = `tmux split-window #{pane["options"]} -t#{session["name"]}:#{window["name"]}`
          cmd_out = %x[tmux select-pane -t #{session["name"]}:#{window["name"]}.#{pane_count}]
          pane["commands"].each do |command|
            cmd_out = %x[tmux send-keys -t#{session["name"]}:#{window["name"]}.#{pane_count} '#{command}' C-m]
          end
        end
      end
    end
  end
end