class GemsComparator::Comparator

Public Class Methods

convert(gems) click to toggle source
# File lib/gems_comparator/comparator.rb, line 5
def self.convert(gems)
  if defined?(Parallel)
    Parallel.map(gems, &:to_h)
  else
    gems.map(&:to_h)
  end
end
new(before_lockfile, after_lockfile) click to toggle source
# File lib/gems_comparator/comparator.rb, line 13
def initialize(before_lockfile, after_lockfile)
  @before_lockfile = before_lockfile
  @after_lockfile = after_lockfile
end

Public Instance Methods

compare() click to toggle source
# File lib/gems_comparator/comparator.rb, line 18
def compare
  gems = addition_gems + change_gems
  Comparator.convert(gems.sort_by(&:name))
end

Private Instance Methods

addition_gems() click to toggle source
# File lib/gems_comparator/comparator.rb, line 38
def addition_gems
  names = after_gems.keys - before_gems.keys
  names.map { |name| new_geminfo(name) }
end
after_gems() click to toggle source
# File lib/gems_comparator/comparator.rb, line 34
def after_gems
  @after_gems ||= parse_lockfile(@after_lockfile)
end
before_gems() click to toggle source
# File lib/gems_comparator/comparator.rb, line 30
def before_gems
  @before_gems ||= parse_lockfile(@before_lockfile)
end
change_gems() click to toggle source
# File lib/gems_comparator/comparator.rb, line 43
def change_gems
  names = before_gems.keys.reject do |name|
    before_gems[name] == after_gems[name]
  end
  names.map { |name| new_geminfo(name) }
end
new_geminfo(name) click to toggle source
# File lib/gems_comparator/comparator.rb, line 50
def new_geminfo(name)
  GemInfo.new(name, before_gems[name].to_s, after_gems[name].to_s)
end
parse_lockfile(lockfile) click to toggle source
# File lib/gems_comparator/comparator.rb, line 25
def parse_lockfile(lockfile)
  parser = Bundler::LockfileParser.new(lockfile)
  parser.specs.map { |spec| [spec.name, spec.version] }.to_h
end