class Fanforce::CLI::Plugins @@dirs = nil def self.dir_names @@dirs ||= Dir.chdir(Fanforce::CLI::DIR) do Dir['*/'].inject([]) do |dirs, d| d = d.gsub('/', '') (d =~ /^([a-z0-9-]+)\/?$/) ? dirs << d : dirs end end end def self.dirs dir_names.inject([]) do |result, d| result << "#{Fanforce::CLI::DIR}/#{d}" end end def self.each(&block) processed_count = 0 total_count = dir_names.size dir_names.each do |d| processed_count += 1 plugin = Fanforce::CLI::Plugin.load("#{Fanforce::CLI::DIR}/#{d}") Dir.chdir(plugin.dir) { block.call(plugin, processed_count, total_count) } end end def self.total_count dir_names.size end end