Sha256: 5fbbf3b761c134ae9986410156e7a62b6046e55a49988e21e0a93e560cd3f26b

Contents?: true

Size: 1.26 KB

Versions: 5

Compression:

Stored size: 1.26 KB

Contents

require 'rubygems'

module Tap
  module Support
    
    # Methods for working with {RubyGems}[http://www.rubygems.org/] 
    # and other gems frequently used by Tap.
    module Gems
      module_function
      
      # Returns the gemspec for the specified gem.  A gem version 
      # can be specified in the name, like 'gem >= 1.2'.  The gem 
      # will be activated using +gem+ if necessary.
      def gemspec(gem_name)
        return gem_name if gem_name.kind_of?(Gem::Specification)
        
        # figure the version of the gem, by default >= 0.0.0
        gem_name.to_s =~ /^([^<=>]*)(.*)$/
        name, version = $1.strip, $2
        version = ">= 0.0.0" if version.empty?
        
        return nil if name.empty?
        
        # load the gem and get the spec
        gem(name, version)
        Gem.loaded_specs[name]
      end
      
      # Selects gem specs for which the block returns true.  If
      # latest is specified, only the latest version of each
      # gem will be passed to the block.
      def select_gems(latest=true)
        index = latest ?
          Gem.source_index.latest_specs :
          Gem.source_index.gems.collect {|(name, spec)| spec }
        
        index.select do |spec|
          yield(spec)
        end.sort
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
tap-0.12.3 lib/tap/support/gems.rb
tap-0.12.0 lib/tap/support/gems.rb
tap-0.12.2 lib/tap/support/gems.rb
tap-0.12.1 lib/tap/support/gems.rb
tap-0.12.4 lib/tap/support/gems.rb