def self.load_plugins plugins = Hoe.plugins
@found ||= {}
@loaded ||= {}
@files ||= Gem.find_files "hoe/*.rb"
@files.reverse.each do |path|
@found[File.basename(path, ".rb").intern] = path
end
:keep_doing_this while @found.map { |name, plugin|
next unless plugins.include? name
next if @loaded[name]
begin
warn "loading #{plugin}" if $DEBUG
@loaded[name] = require plugin
rescue LoadError => e
warn "error loading #{plugin.inspect}: #{e.message}. skipping..."
end
}.any?
bad_plugins = plugins - @loaded.keys
bad_plugins.each do |bad_plugin|
plugins.delete bad_plugin
end
@bad_plugins.concat bad_plugins
@bad_plugins.uniq!
return @loaded, @found
end