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