class Dependabot::Config::IgnoreCondition

Filters versions that should not be considered for dependency updates

Constants

ALL_VERSIONS
MAJOR_VERSION_TYPE
MINOR_VERSION_TYPE
PATCH_VERSION_TYPE

Attributes

dependency_name[R]
update_types[R]
versions[R]

Public Class Methods

new(dependency_name:, versions: nil, update_types: nil) click to toggle source
# File lib/dependabot/config/ignore_condition.rb, line 15
def initialize(dependency_name:, versions: nil, update_types: nil)
  @dependency_name = dependency_name
  @versions = versions || []
  @update_types = update_types || []
end

Public Instance Methods

ignored_versions(dependency, security_updates_only) click to toggle source
# File lib/dependabot/config/ignore_condition.rb, line 21
def ignored_versions(dependency, security_updates_only)
  return versions if security_updates_only
  return [ALL_VERSIONS] if versions.empty? && transformed_update_types.empty?

  versions_by_type(dependency) + versions
end

Private Instance Methods

ignore_major(version) click to toggle source
# File lib/dependabot/config/ignore_condition.rb, line 76
def ignore_major(version)
  return [] unless rubygems_compatible?(version)

  version_parts = version.split(".")
  lower_parts = [version_parts[0].to_i + 1] + ["a"]
  lower_bound = ">= #{lower_parts.join('.')}"

  [lower_bound]
end
ignore_minor(version) click to toggle source
# File lib/dependabot/config/ignore_condition.rb, line 63
def ignore_minor(version)
  return [] unless rubygems_compatible?(version)

  parts = version.split(".")
  version_parts = parts.fill(0, parts.length...2)
  lower_parts = version_parts.first(1) + [version_parts[1].to_i + 1] + ["a"]
  upper_parts = version_parts.first(0) + [version_parts[0].to_i + 1]
  lower_bound = ">= #{lower_parts.join('.')}"
  upper_bound = "< #{upper_parts.join('.')}"

  ["#{lower_bound}, #{upper_bound}"]
end
ignore_patch(version) click to toggle source
# File lib/dependabot/config/ignore_condition.rb, line 51
def ignore_patch(version)
  return [] unless rubygems_compatible?(version)

  parts = version.split(".")
  version_parts = parts.fill(0, parts.length...2)
  upper_parts = version_parts.first(1) + [version_parts[1].to_i + 1]
  lower_bound = "> #{version}"
  upper_bound = "< #{upper_parts.join('.')}"

  ["#{lower_bound}, #{upper_bound}"]
end
rubygems_compatible?(version) click to toggle source
# File lib/dependabot/config/ignore_condition.rb, line 86
def rubygems_compatible?(version)
  return false if version.nil? || version.empty?

  Gem::Version.correct?(version)
end
transformed_update_types() click to toggle source
# File lib/dependabot/config/ignore_condition.rb, line 30
def transformed_update_types
  update_types.map(&:downcase).map(&:strip).compact
end
versions_by_type(dependency) click to toggle source
# File lib/dependabot/config/ignore_condition.rb, line 34
def versions_by_type(dependency)
  return [] unless dependency.version

  transformed_update_types.flat_map do |t|
    case t
    when PATCH_VERSION_TYPE
      ignore_patch(dependency.version)
    when MINOR_VERSION_TYPE
      ignore_minor(dependency.version)
    when MAJOR_VERSION_TYPE
      ignore_major(dependency.version)
    else
      []
    end
  end.compact
end