Sha256: 2d84efbebf9b7cd7617476d0547c9a5a80752ab9acf41cf396e8f738bebef6ea

Contents?: true

Size: 1.44 KB

Versions: 80

Compression:

Stored size: 1.44 KB

Contents

# frozen_string_literal: true

require "dependabot/file_updaters/elixir/hex"
require "dependabot/shared_helpers"

module Dependabot
  module FileUpdaters
    module Elixir
      class Hex
        class MixfileGitPinUpdater
          def initialize(dependency_name:, mixfile_content:,
                         previous_pin:, updated_pin:)
            @dependency_name = dependency_name
            @mixfile_content = mixfile_content
            @previous_pin    = previous_pin
            @updated_pin     = updated_pin
          end

          def updated_content
            updated_content = update_pin(mixfile_content)

            if content_should_change? && mixfile_content == updated_content
              raise "Expected content to change!"
            end

            updated_content
          end

          private

          attr_reader :dependency_name, :mixfile_content,
                      :previous_pin, :updated_pin

          def update_pin(content)
            requirement_line_regex =
              /
                \{\s*:#{Regexp.escape(dependency_name)},[^\}]*
                (?:ref|tag):\s+["']#{Regexp.escape(previous_pin)}["']
              /mx

            content.gsub(requirement_line_regex) do |requirement_line|
              requirement_line.gsub(previous_pin, updated_pin)
            end
          end

          def content_should_change?
            previous_pin == updated_pin
          end
        end
      end
    end
  end
end

Version data entries

80 entries across 80 versions & 1 rubygems

Version Path
dependabot-core-0.87.15 lib/dependabot/file_updaters/elixir/hex/mixfile_git_pin_updater.rb
dependabot-core-0.87.14 lib/dependabot/file_updaters/elixir/hex/mixfile_git_pin_updater.rb
dependabot-core-0.87.13 lib/dependabot/file_updaters/elixir/hex/mixfile_git_pin_updater.rb
dependabot-core-0.87.12 lib/dependabot/file_updaters/elixir/hex/mixfile_git_pin_updater.rb
dependabot-core-0.87.11 lib/dependabot/file_updaters/elixir/hex/mixfile_git_pin_updater.rb
dependabot-core-0.87.10 lib/dependabot/file_updaters/elixir/hex/mixfile_git_pin_updater.rb
dependabot-core-0.87.9 lib/dependabot/file_updaters/elixir/hex/mixfile_git_pin_updater.rb
dependabot-core-0.87.8 lib/dependabot/file_updaters/elixir/hex/mixfile_git_pin_updater.rb
dependabot-core-0.87.7 lib/dependabot/file_updaters/elixir/hex/mixfile_git_pin_updater.rb
dependabot-core-0.87.6 lib/dependabot/file_updaters/elixir/hex/mixfile_git_pin_updater.rb
dependabot-core-0.87.5 lib/dependabot/file_updaters/elixir/hex/mixfile_git_pin_updater.rb
dependabot-core-0.87.4 lib/dependabot/file_updaters/elixir/hex/mixfile_git_pin_updater.rb
dependabot-core-0.87.3 lib/dependabot/file_updaters/elixir/hex/mixfile_git_pin_updater.rb
dependabot-core-0.87.2 lib/dependabot/file_updaters/elixir/hex/mixfile_git_pin_updater.rb
dependabot-core-0.87.1 lib/dependabot/file_updaters/elixir/hex/mixfile_git_pin_updater.rb
dependabot-core-0.87.0 lib/dependabot/file_updaters/elixir/hex/mixfile_git_pin_updater.rb
dependabot-core-0.86.25 lib/dependabot/file_updaters/elixir/hex/mixfile_git_pin_updater.rb
dependabot-core-0.86.24 lib/dependabot/file_updaters/elixir/hex/mixfile_git_pin_updater.rb
dependabot-core-0.86.23 lib/dependabot/file_updaters/elixir/hex/mixfile_git_pin_updater.rb
dependabot-core-0.86.22 lib/dependabot/file_updaters/elixir/hex/mixfile_git_pin_updater.rb