module Polisher::GemParser::ClassMethods

Public Instance Methods

from_gem(gem_path) click to toggle source

Return new instance of Gem from rubygem

# File lib/polisher/gem/parser.rb, line 57
def from_gem(gem_path)
  gem = parse :gemspec => ::Gem::Package.new(gem_path).spec
  gem.path = gem_path
  gem
end
from_gemspec(gemspec) click to toggle source

Return new instance of Gem from Gemspec

# File lib/polisher/gem/parser.rb, line 16
def from_gemspec(gemspec)
  gemspec  =
    ::Gem::Specification.load(gemspec) if !gemspec.is_a?(::Gem::Specification) &&
                                           File.exist?(gemspec)

  metadata            = {}
  metadata[:spec]     = gemspec
  metadata[:name]     = gemspec.name
  metadata[:version]  = gemspec.version.to_s
  metadata[:deps]     = gemspec.dependencies
                               .select  { |dep| dep.type == :runtime }
                               .collect { |dep| dep }
  metadata[:dev_deps] = gemspec.dependencies
                               .select  { |dep| dep.type == :development }
                               .collect { |dep| dep }

  new metadata
end
from_json(json) click to toggle source

Return new instance of Gem from JSON Specification

# File lib/polisher/gem/parser.rb, line 36
def from_json(json)
  specj     = JSON.parse(json)
  metadata           = {}
  metadata[:spec]    = specj
  metadata[:name]    = specj['name']
  metadata[:version] = specj['version']

  metadata[:deps] =
    specj['dependencies']['runtime'].collect do |d|
      ::Gem::Dependency.new d['name'], *d['requirements'].split(',')
    end

  metadata[:dev_deps] =
    specj['dependencies']['development'].collect do |d|
      ::Gem::Dependency.new d['name'], d['requirements'].split(',')
    end

  new metadata
end
parse(args = {}) click to toggle source

Parse the specified gemspec & return new Gem instance from metadata

@param [String,Hash] args contents of actual gemspec of option hash specifying location of gemspec to parse @option args [String] :gemspec path to gemspec to load / parse @return [Polisher::Gem] gem instantiated from gemspec metadata

# File lib/polisher/gem/parser.rb, line 69
def parse(args = {})
  if args.is_a?(String)
    return from_json args

  elsif args.key?(:gemspec)
    return from_gemspec args[:gemspec]

  elsif args.key?(:gem)
    return from_gem args[:gem]

  end

  new
end