class Dependabot::DependencyGroup
def contains?(dependency)
def contains?(dependency) return true if @dependencies.include?(dependency) return false if matches_excluded_pattern?(dependency.name) matches_pattern?(dependency.name) && matches_dependency_type?(dependency) end
def experimental_rules_enabled?
def experimental_rules_enabled? Dependabot::Experiments.enabled?(:grouped_updates_experimental_rules) end
def initialize(name:, rules:, applies_to: "version-updates")
def initialize(name:, rules:, applies_to: "version-updates") @name = name # For backwards compatibility, if no applies_to is provided, default to "version-updates" @applies_to = T.let(applies_to || "version-updates", String) @rules = rules @dependencies = T.let([], T::Array[Dependabot::Dependency]) end
def matches_dependency_type?(dependency)
def matches_dependency_type?(dependency) return true unless rules.key?("dependency-type") # If no dependency-type is set, match by default rules["dependency-type"] == if dependency.production? "production" else "development" end end
def matches_excluded_pattern?(dependency_name)
def matches_excluded_pattern?(dependency_name) return false unless rules.key?("exclude-patterns") # If there are no exclusions, fail by default T.unsafe(rules["exclude-patterns"]).any? { |rule| WildcardMatcher.match?(rule, dependency_name) } end
def matches_pattern?(dependency_name)
def matches_pattern?(dependency_name) return true unless rules.key?("patterns") # If no patterns are defined, we pass this check by default T.unsafe(rules["patterns"]).any? { |rule| WildcardMatcher.match?(rule, dependency_name) } end
def to_config_yaml
def to_config_yaml { "groups" => { name => rules } }.to_yaml.delete_prefix("---\n") end
def to_h
def to_h { "name" => name } end