Merge pull request #13907 from troymccabe/bugfix/13789-homepage-gh-private-repo-check

Checks github API if homepage 404s
This commit is contained in:
Mike McQuaid 2022-09-21 13:58:11 +01:00 committed by GitHub
commit fbbcb9700c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 23 additions and 3 deletions

View File

@ -716,7 +716,7 @@ module Cask
return unless cask.homepage
validate_url_for_https_availability(cask.homepage, "homepage URL", cask.token, cask.tap,
validate_url_for_https_availability(cask.homepage, SharedAudits::URL_TYPE_HOMEPAGE, cask.token, cask.tap,
user_agents: [:browser, :default],
check_content: true,
strict: strict?)

View File

@ -498,7 +498,7 @@ module Homebrew
end
if (http_content_problem = curl_check_http_content(homepage,
"homepage URL",
SharedAudits::URL_TYPE_HOMEPAGE,
user_agents: [:browser, :default],
check_content: true,
strict: @strict,

View File

@ -290,7 +290,25 @@ module Utils
url_protected_by_cloudflare?(response) || url_protected_by_incapsula?(response)
end
return "The #{url_type} #{url} is not reachable (HTTP status code #{details[:status_code]})"
# https://github.com/Homebrew/brew/issues/13789
# If the `:homepage` of a formula is private, it will fail an `audit`
# since there's no way to specify a `strategy` with `using:` and
# GitHub does not authorize access to the web UI using token
#
# Strategy:
# If the `:homepage` 404s, it's a GitHub link, and we have a token then
# check the API (which does use tokens) for the repository
repo_details = url.match(%r{https?://github\.com/(?<user>[^/]+)/(?<repo>[^/]+)/?.*})
check_github_api = url_type == SharedAudits::URL_TYPE_HOMEPAGE &&
details[:status_code] == "404" &&
repo_details &&
Homebrew::EnvConfig.github_api_token
unless check_github_api
return "The #{url_type} #{url} is not reachable (HTTP status code #{details[:status_code]})"
end
"Unable to find homepage" if SharedAudits.github_repo_data(repo_details[:user], repo_details[:repo]).nil?
end
if url.start_with?("https://") && Homebrew::EnvConfig.no_insecure_redirect? &&

View File

@ -10,6 +10,8 @@ module SharedAudits
include Utils::Curl
extend Utils::Curl
URL_TYPE_HOMEPAGE = "homepage URL"
module_function
def github_repo_data(user, repo)