class Hoe

def self.load_plugins plugins = Hoe.plugins

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