class Dependabot::Bundler::FileUpdater::GitSourceRemover::Rewriter

Constants

GOOD_KEYS

TODO: Hack until Bundler 1.16.0 is available on Heroku

Attributes

dependency[R]

Public Class Methods

new(dependency:) click to toggle source
# File lib/dependabot/bundler/file_updater/git_source_remover.rb, line 33
def initialize(dependency:)
  @dependency = dependency
end

Public Instance Methods

on_send(node) click to toggle source
# File lib/dependabot/bundler/file_updater/git_source_remover.rb, line 37
def on_send(node)
  return unless declares_targeted_gem?(node)
  return unless node.children.last.type == :hash

  kwargs_node = node.children.last
  keys = kwargs_node.children.map do |hash_pair|
    key_from_hash_pair(hash_pair)
  end

  if keys.none? { |key| GOOD_KEYS.include?(key) }
    remove_all_kwargs(node)
  else
    remove_git_related_kwargs(kwargs_node)
  end
end

Private Instance Methods

declares_targeted_gem?(node) click to toggle source
# File lib/dependabot/bundler/file_updater/git_source_remover.rb, line 55
def declares_targeted_gem?(node)
  return false unless node.children[1] == :gem

  node.children[2].children.first == dependency.name
end
key_from_hash_pair(node) click to toggle source
# File lib/dependabot/bundler/file_updater/git_source_remover.rb, line 61
def key_from_hash_pair(node)
  node.children.first.children.first.to_sym
end
remove_all_kwargs(node) click to toggle source
# File lib/dependabot/bundler/file_updater/git_source_remover.rb, line 65
def remove_all_kwargs(node)
  kwargs_node = node.children.last

  range_to_remove =
    kwargs_node.loc.expression.join(node.children[-2].loc.end.end)

  remove(range_to_remove)
end