module Mucks::Main

Public Instance Methods

run() click to toggle source
# File lib/mucks/mucks.rb, line 150
def run
  set_configs
  validate_configs

  if Config.list
    show_all_configured_sessions
    return
  end

  return if @session_config.sessions.empty?

  show_valid_sessions
  invoke_sessions

  attach @session_config.sessions.last if Config.attach
end

Private Instance Methods

attach(session) click to toggle source
# File lib/mucks/mucks.rb, line 200
def attach(session)
  Executor.run "tmux attach -t #{session.name}"
end
configure(session) click to toggle source
# File lib/mucks/mucks.rb, line 209
def configure(session)
  layout = layout_for(session)
  layout.each do |command|
    Executor.run command, session
  end
end
invoke(session) click to toggle source
# File lib/mucks/mucks.rb, line 179
def invoke(session)
  Output.wrap_with("#{session.name} Session", Config.dry_run) do
    if start(session) == 0 || Config.dry_run
      configure session
    end
  end
end
invoke_sessions() click to toggle source
# File lib/mucks/mucks.rb, line 173
def invoke_sessions
  @session_config.sessions.each do |session|
    invoke session
  end
end
layout_for(session) click to toggle source
# File lib/mucks/mucks.rb, line 216
def layout_for(session)
  layout = []
  @layout_config[session.layout].each do |command|
    if set_path?(command)
      layout << parse_path(session, command)
    else
      layout << command
    end
  end
  layout
end
parse_path(session, command) click to toggle source
# File lib/mucks/mucks.rb, line 232
def parse_path(session, command)
  path = command.gsub(/set_path */i, '')

  if path.empty?
    path = session.path
  else
    path = File.expand_path(path)
  end

  tmux_chdir path
end
set_configs() click to toggle source
# File lib/mucks/mucks.rb, line 187
def set_configs
  @session_config = SessionConfig.new('~/.mucks/sessions.yaml')
  @layout_config  = LayoutConfig.new('~/.mucks/layouts.yaml')
end
set_path?(command) click to toggle source
# File lib/mucks/mucks.rb, line 228
def set_path?(command)
  command.downcase == 'set_path' || command.downcase =~ /^set_path /
end
show_all_configured_sessions() click to toggle source
# File lib/mucks/mucks.rb, line 169
def show_all_configured_sessions
  @session_config.show_self
end
show_valid_sessions() click to toggle source
# File lib/mucks/mucks.rb, line 192
def show_valid_sessions
  Output.wrap_with('Valid Sessions', Config.dry_run) do
    if Config.verbose || Config.dry_run
      puts @session_config.sessions.map(&:name)
    end
  end
end
start(session) click to toggle source
# File lib/mucks/mucks.rb, line 204
def start(session)
  Dir.chdir session.path
  Executor.run "tmux new -s #{session.name} -d"
end
tmux_chdir(path) click to toggle source
# File lib/mucks/mucks.rb, line 244
def tmux_chdir(path)
  "tmux send-keys 'cd \"#{path}\"' C-m"
end
validate_configs() click to toggle source
# File lib/mucks/mucks.rb, line 248
def validate_configs
  invalid = []
  @session_config.layouts.each do |layout|
    unless @layout_config.layout_keys.include?(layout)
      puts "Invalid layout selected: #{layout}"
      invalid << layout
    end
  end

  invalid.each do |layout|
    @session_config.remove_by_layout layout
  end
end