lib/dependabot/file_parsers.rb



# typed: strong
# frozen_string_literal: true

require "sorbet-runtime"
require "dependabot/file_parsers/base"

module Dependabot
  module FileParsers
    extend T::Sig

    @file_parsers = T.let({}, T::Hash[String, T.class_of(Dependabot::FileParsers::Base)])

    sig { params(package_manager: String).returns(T.class_of(Dependabot::FileParsers::Base)) }
    def self.for_package_manager(package_manager)
      file_parser = @file_parsers[package_manager]
      return file_parser if file_parser

      raise "Unsupported package_manager #{package_manager}"
    end

    sig { params(package_manager: String, file_parser: T.class_of(Dependabot::FileParsers::Base)).void }
    def self.register(package_manager, file_parser)
      @file_parsers[package_manager] = file_parser
    end
  end
end