Sha256: 40b18db064d92fb392723d6ff23be1b9f0d51f687f48d08e7f89c2762eb6a0de
Contents?: true
Size: 1.99 KB
Versions: 24
Compression:
Stored size: 1.99 KB
Contents
# frozen_string_literal: true require "dependabot/file_updaters/elm/elm_package" module Dependabot module FileUpdaters module Elm class ElmPackage class ElmPackageUpdater def initialize(elm_package_file:, dependencies:) @elm_package_file = elm_package_file @dependencies = dependencies end def updated_elm_package_file_content dependencies. select { |dep| requirement_changed?(elm_package_file, dep) }. reduce(elm_package_file.content.dup) do |content, dep| updated_content = content updated_content = update_requirement( content: updated_content, filename: elm_package_file.name, dependency: dep ) next updated_content unless content == updated_content raise "Expected content to change!" end end private attr_reader :elm_package_file, :dependencies def requirement_changed?(file, dependency) changed_requirements = dependency.requirements - dependency.previous_requirements changed_requirements.any? { |f| f[:file] == file.name } end def update_requirement(content:, filename:, dependency:) updated_req = dependency.requirements. find { |r| r.fetch(:file) == filename }. fetch(:requirement) old_req = dependency.previous_requirements. find { |r| r.fetch(:file) == filename }. fetch(:requirement) return content unless old_req dep = dependency regex = /"#{Regexp.quote(dep.name)}"\s*:\s+"#{Regexp.quote(old_req)}"/ content.gsub(regex) do |declaration| declaration.gsub(%("#{old_req}"), %("#{updated_req}")) end end end end end end end
Version data entries
24 entries across 24 versions & 1 rubygems