Class: Auto::Plugins

Inherits:
Object
  • Object
show all
Defined in:
lib/auto/plugins.rb

Defined Under Namespace

Classes: Plugin

Constant Summary collapse

@@directories =
[
  Gem.dir + "/gems",
  "~/.auto",
  "#{File.dirname(__FILE__)}/../../vendor/plugins"
]
@@plugins =
nil

Class Method Summary collapse

Class Method Details

.add(path) ⇒ Object

Add a directory to the plugin load paths.



18
19
20
21
22
23
# File 'lib/auto/plugins.rb', line 18

def add(path)
  @@directories = [] if $testing
  @@directories << path
  @@directories.uniq!
  @@plugins = nil
end

.librariesObject

Returns an array of library file paths.



39
40
41
# File 'lib/auto/plugins.rb', line 39

def libraries
  collector { |plugin| plugin.library }
end

.modulesObject

Returns an array of modules.



44
45
46
# File 'lib/auto/plugins.rb', line 44

def modules
  collector { |plugin| plugin.module }
end

.pluginsObject

Returns an array of Plugin instances.



26
27
28
29
30
31
32
33
34
35
36
# File 'lib/auto/plugins.rb', line 26

def plugins
  return @@plugins if @@plugins
  directories = @@directories.collect do |d|
    File.expand_path("#{d}/*auto-*/")
  end
  @@plugins = Dir[*directories].collect do |d|
    Plugin.new(d)
  end
  @@plugins.compact!
  @@plugins
end

.tasks(task = nil) ⇒ Object

Returns a sorted array of hashes that describe tasks. Returns a specific task with an optional task parameter (string, ‘task:name’).



50
51
52
53
54
55
56
57
58
59
60
# File 'lib/auto/plugins.rb', line 50

def tasks(task=nil)
  if task
    tasks.select { |t| t[:name] == task.downcase }.first
  else
    t = collector { |plugin| plugin.tasks }
    t = t.flatten
    t.sort do |a, b|
      a[:name].gsub(':', '0') <=> b[:name].gsub(':', '0')
    end
  end
end