Sha256: 16b90bd4b0a4ae94ac93dee9735bf9f686ccc0f8566f26501d9667e637a67af3

Contents?: true

Size: 1.71 KB

Versions: 9

Compression:

Stored size: 1.71 KB

Contents

require 'pathname'

module Retrospec
  module PluginLoader
    # Internal: Find any gems containing retrospec plugins and load the main file in them.
    #
    # Returns nothing.
    def self.load_from_gems(version='v1')
      gem_directories.each do |gem_path|
        Dir[File.join(gem_path,'*.rb')].each do |file|
          load file
        end
      end
    end

    # Internal: Retrieve a list of available gem paths from RubyGems.
    # filter out the main retrospec gem, then filter out any plugin that is
    # not a retrospec gem.
    #
    # Returns an Array of Pathname objects.
    def self.gem_directories
      dirs = []
      if has_rubygems?
       dirs = gemspecs.reject { |spec| spec.name == 'retrospec' }.map do |spec|
          lib_path = File.expand_path(File.join(spec.full_gem_path,'lib'))
          lib_path if File.exists? File.join(lib_path,'retrospec','plugins')
        end
      end
      dirs.reject { |dir| dir.nil? }
    end


    # returns a list of retrospec gem plugin specs
    def self.retrospec_gem_list
      gemspecs.reject { |spec| spec.name == 'retrospec' or ! File.directory?(File.join(spec.full_gem_path,'lib','retrospec','plugins')) }
    end

    # Internal: Check if RubyGems is loaded and available.
    #
    # Returns true if RubyGems is available, false if not.
    def self.has_rubygems?
      defined? ::Gem
    end

    # Internal: Retrieve a list of available gemspecs.
    #
    # Returns an Array of Gem::Specification objects.
    def self.gemspecs
      @gemspecs ||= if Gem::Specification.respond_to?(:latest_specs)
                      Gem::Specification.latest_specs
                    else
                      Gem.searcher.init_gemspecs
                    end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
retrospec-0.7.0 lib/retrospec/plugin_loader.rb
retrospec-0.6.2 lib/retrospec/plugin_loader.rb
retrospec-0.6.1 lib/retrospec/plugin_loader.rb
retrospec-0.6.0 lib/retrospec/plugin_loader.rb
retrospec-0.5.1 lib/retrospec/plugin_loader.rb
retrospec-0.5.0 lib/retrospec/plugin_loader.rb
retrospec-0.4.0 lib/retrospec/plugin_loader.rb
retrospec-0.3.1 lib/retrospec/plugin_loader.rb
retrospec-0.3.0 lib/retrospec/plugin_loader.rb