# frozen_string_literal: true require 'bundler' module Unwrappr # Compares two lock files and emits a diff of versions module LockFileComparator class << self def perform(lock_file_content_before, lock_file_content_after) lock_file_before = Bundler::LockfileParser.new(lock_file_content_before) lock_file_after = Bundler::LockfileParser.new(lock_file_content_after) versions_diff = SpecVersionComparator.perform( specs_versions(lock_file_before), specs_versions(lock_file_after) ) { versions: versions_diff } end private def specs_versions(lock_file) Hash[lock_file.specs.map { |s| [s.name.to_sym, s.version.to_s] }] end end end end