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