module MultiTerm

Public Class Methods

configuration() click to toggle source

Memoized copy of the default configuration.

# File lib/multiterm.rb, line 21
def self.configuration
  @@configuration ||= read_configuration
end
execute() click to toggle source
# File lib/multiterm.rb, line 48
def self.execute
  if configuration
    app = Osaka::Terminal.new
    app.activate
    tab_config = {
      :directory => configuration[:root],
      :new_tab => false
    }.merge(configuration[:parent])
    app.tab_configure(tab_config)
    for tab_config in configuration[:tabs]
      tab_config = {
        :directory => configuration[:root],
        :new_tab => true
      }.merge(tab_config)
      tab_config[:directory] = File.realdirpath(
        tab_config[:directory],
        (configuration[:root] || File.expand_path('.'))
      )
      app.tab_configure(tab_config)
    end
  else
    puts "Missing '.multiterm.yml' configuration."
  end
end
read_configuration(path=nil) click to toggle source

Loads the configuration file for the current path.

# File lib/multiterm.rb, line 27
def self.read_configuration(path=nil)
  if path != nil && File.exists?(path) && File.directory?(path)
    current_path = path
  elsif path != nil && File.exists?(path) && !File.directory?(path)
    current_path = File.dirname(path)
  else
    current_path = File.expand_path('.')
  end
  home_path = File.expand_path('~')
  search_path = current_path
  while search_path != '/' && search_path != home_path
    if File.exists?(File.join(search_path, '.multiterm.yml'))
      settings = YAML.load(File.read(File.join(search_path, '.multiterm.yml')))
      settings[:root] = File.expand_path(search_path)
      return settings if settings
    end
    search_path = File.expand_path(File.join(search_path, '..'))
  end
  return nil
end