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