class Dependabot::Elm::FileUpdater::ElmJsonUpdater
Attributes
dependencies[R]
elm_json_file[R]
Public Class Methods
new(elm_json_file:, dependencies:)
click to toggle source
# File lib/dependabot/elm/file_updater/elm_json_updater.rb, line 9 def initialize(elm_json_file:, dependencies:) @elm_json_file = elm_json_file @dependencies = dependencies end
Public Instance Methods
updated_content()
click to toggle source
# File lib/dependabot/elm/file_updater/elm_json_updater.rb, line 14 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 Instance Methods
requirement_changed?(file, dependency)
click to toggle source
# File lib/dependabot/elm/file_updater/elm_json_updater.rb, line 36 def requirement_changed?(file, dependency) changed_requirements = dependency.requirements - dependency.previous_requirements changed_requirements.any? { |f| f[:file] == file.name } end
update_requirement(content:, filename:, dependency:)
click to toggle source
# File lib/dependabot/elm/file_updater/elm_json_updater.rb, line 43 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