class Dependabot::Source

def self.github_enterprise_from_url(url_string)

def self.github_enterprise_from_url(url_string)
  captures = url_string&.match(GITHUB_ENTERPRISE_SOURCE)&.named_captures
  return unless captures
  return if IGNORED_PROVIDER_HOSTS.include?(captures.fetch("host"))
  base_url = "https://#{captures.fetch('host')}"
  return unless github_enterprise?(base_url)
  new(
    provider: "github",
    repo: T.must(captures.fetch("repo")).delete_suffix(".git").delete_suffix("."),
    directory: captures.fetch("directory"),
    branch: captures.fetch("branch"),
    hostname: captures.fetch("host"),
    api_endpoint: File.join(base_url, "api", "v3")
  )
end