class LockDiff::Gem::LockfileComparator

Public Class Methods

new(old_lockfile:, new_lockfile:) click to toggle source
# File lib/lock_diff/gem/lockfile_comparator.rb, line 4
def initialize(old_lockfile:, new_lockfile:)
  @old_lockfile = old_lockfile
  @new_lockfile = new_lockfile
end

Public Instance Methods

call() click to toggle source
# File lib/lock_diff/gem/lockfile_comparator.rb, line 9
def call
  old_specs_by_name = Spec.parse(@old_lockfile).map { |spec| [spec.name, spec] }.to_h
  new_specs_by_name = Spec.parse(@new_lockfile).map { |spec| [spec.name, spec] }.to_h
  names = (old_specs_by_name.keys + new_specs_by_name.keys).uniq

  names.map { |name|
    DiffInfo.new(
      old_package: (old_specs_by_name[name] || NullSpec.new(name)).to_package,
      new_package: (new_specs_by_name[name] || NullSpec.new(name)).to_package
    )
  }.select(&:changed?)
end