class MetricFu::GemVersion

Constants

ADD_DEPENDENCY_CALL
COMMENT
GEM_NAME

regexp from github.com/gemnasium/gemnasium-parser/blob/807d7ccc/lib/gemnasium/parser/patterns.rb#L11

under MIT License
MATCHER
QUOTED_GEM_NAME
REQUIREMENT
REQUIREMENTS
REQUIREMENT_LIST
RESOLVER
VERSION

Public Class Methods

activated_gems() click to toggle source
# File lib/metric_fu/gem_version.rb, line 63
def self.activated_gems
  if Gem::Specification.respond_to?(:stubs)
    Gem::Specification.stubs
  else
    Gem.loaded_specs.values
  end.select(&:activated?)
end
activated_version(name) click to toggle source
# File lib/metric_fu/gem_version.rb, line 71
def self.activated_version(name)
  activated_gems.find do |gem|
    return gem.version.version if gem.name == name
  end
end
dependencies() click to toggle source
# File lib/metric_fu/gem_version.rb, line 59
def self.dependencies
  RESOLVER.gem_runtime_dependencies.dup
end
dependencies_summary() click to toggle source
# File lib/metric_fu/gem_version.rb, line 86
def self.dependencies_summary
  dependencies.map do |gem_dep|
    dependency_summary(gem_dep)
  end
end
dependency_summary(gem_dep) click to toggle source
# File lib/metric_fu/gem_version.rb, line 77
def self.dependency_summary(gem_dep)
  name = gem_dep.name
  version = activated_version(gem_dep.name) || gem_dep.requirements_list
  {
    "name" => name,
    "version" => version,
  }
end
for(name) click to toggle source
# File lib/metric_fu/gem_version.rb, line 55
def self.for(name)
  RESOLVER.for(name).dup
end
new() click to toggle source
# File lib/metric_fu/gem_version.rb, line 17
def initialize
  @gem_spec = File.open(gemspec, "rb") { |f| f.readlines }
end

Public Instance Methods

for(name) click to toggle source
# File lib/metric_fu/gem_version.rb, line 41
def for(name)
  name.downcase!
  dep = gem_runtime_dependencies.find(unknown_dependency(name)) do |gem_dep|
    gem_dep.name == name
  end

  dep.requirements_list
end
gem_runtime_dependencies() click to toggle source
# File lib/metric_fu/gem_version.rb, line 29
def gem_runtime_dependencies
  @gem_runtime_dependencies ||=
    begin
      @gem_spec.grep(/add_dependency|add_runtime/).map do |line|
        match = line.match(ADD_DEPENDENCY_CALL)
        name = match["name"].downcase.sub("metric_fu-", "")
        version = [match["req1"], match["req2"]].compact
        new_dependency(name, version)
      end.compact << new_dependency("rcov", ["~> 0.8"])
    end
end
gemspec() click to toggle source
# File lib/metric_fu/gem_version.rb, line 21
def gemspec
  File.join(MetricFu.root_dir, "metric_fu.gemspec")
end
new_dependency(name, version) click to toggle source
# File lib/metric_fu/gem_version.rb, line 25
def new_dependency(name, version)
  Gem::Dependency.new(name, version, :runtime)
end
unknown_dependency(name) click to toggle source
# File lib/metric_fu/gem_version.rb, line 50
def unknown_dependency(name)
  -> { new_dependency(name, [">= 0"]) }
end