module Dependabot::Utils

def self.register_requirement_class(package_manager, requirement_class)

def self.register_requirement_class(package_manager, requirement_class)
  validate_package_manager!(package_manager)
  @requirement_classes[package_manager] = requirement_class
end

def self.register_version_class(package_manager, version_class)

def self.register_version_class(package_manager, version_class)
  validate_package_manager!(package_manager)
  @version_classes[package_manager] = version_class
end

def self.requirement_class_for_package_manager(package_manager)

def self.requirement_class_for_package_manager(package_manager)
  requirement_class = @requirement_classes[package_manager]
  return requirement_class if requirement_class
  raise "Unregistered package_manager #{package_manager}"
end

def self.validate_package_manager!(package_manager)

def self.validate_package_manager!(package_manager)
  # Official package manager
  return if Config::File::PACKAGE_MANAGER_LOOKUP.invert.key?(package_manager)
  # Used by specs
  return if package_manager == "dummy" || package_manager == "silent"
  raise "Unsupported package_manager #{package_manager}"
end

def self.version_class_for_package_manager(package_manager)

def self.version_class_for_package_manager(package_manager)
  version_class = @version_classes[package_manager]
  return version_class if version_class
  raise "Unregistered package_manager #{package_manager}"
end