class Dependabot::PullRequestCreator::BranchNamer::DependencyGroupStrategy

def dependency_digest

def dependency_digest
  @dependency_digest ||= T.let(
    Digest::MD5.hexdigest(dependencies.map do |dependency|
                            "#{dependency.name}-#{dependency.removed? ? 'removed' : dependency.version}"
                          end.sort.join(",")).slice(0, 10),
    T.nilable(String)
  )
end

def directory

def directory
  return if files.empty?
  T.must(files.first).directory.tr(" ", "-")
end

def group_name_with_dependency_digest

def group_name_with_dependency_digest
  if @includes_security_fixes
    "group-security-#{package_manager}-#{dependency_digest}"
  else
    "#{dependency_group.name}-#{dependency_digest}"
  end
end

def initialize(dependencies:, files:, target_branch:, dependency_group:, includes_security_fixes:,

def initialize(dependencies:, files:, target_branch:, dependency_group:, includes_security_fixes:,
               separator: "/", prefix: "dependabot", max_length: nil)
  super(
    dependencies: dependencies,
    files: files,
    target_branch: target_branch,
    separator: separator,
    prefix: prefix,
    max_length: max_length,
  )
  @dependency_group = dependency_group
  @includes_security_fixes = includes_security_fixes
end

def new_branch_name

def new_branch_name
  sanitize_branch_name(File.join(prefixes, group_name_with_dependency_digest))
end

def package_manager

def package_manager
  T.must(dependencies.first).package_manager
end

def prefixes

def prefixes
  [
    prefix,
    package_manager,
    directory,
    target_branch
  ].compact
end