Sha256: d355f289572574245ba5825ef80929c9089189492cda1b2f6688d913669fbd4c
Contents?: true
Size: 1.95 KB
Versions: 24
Compression:
Stored size: 1.95 KB
Contents
# frozen_string_literal: true require "dependabot/file_updaters/elm/elm_package" module Dependabot module FileUpdaters module Elm class ElmPackage class ElmJsonUpdater def initialize(elm_json_file:, dependencies:) @elm_json_file = elm_json_file @dependencies = dependencies end def updated_content dependencies. select { |dep| requirement_changed?(elm_json_file, dep) }. reduce(elm_json_file.content.dup) do |content, dep| updated_content = content updated_content = update_requirement( content: updated_content, filename: elm_json_file.name, dependency: dep ) next updated_content unless content == updated_content raise "Expected content to change!" end end private attr_reader :elm_json_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