From 1858dab31ff344fd1de4d0a851b475545b26de40 Mon Sep 17 00:00:00 2001 From: Markus Reiter Date: Sat, 5 Sep 2020 06:07:55 +0200 Subject: [PATCH 1/2] Add `SharedAudits::gitlab_release`. --- Library/Homebrew/cask/audit.rb | 6 ++---- Library/Homebrew/dev-cmd/audit.rb | 10 +++------- Library/Homebrew/utils/shared_audits.rb | 12 ++++++++++++ 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/Library/Homebrew/cask/audit.rb b/Library/Homebrew/cask/audit.rb index 3fde97f46c..8f44e5030f 100644 --- a/Library/Homebrew/cask/audit.rb +++ b/Library/Homebrew/cask/audit.rb @@ -481,10 +481,8 @@ module Cask odebug "Auditing GitLab prerelease" - metadata = SharedAudits.gitlab_release_data(user, repo, cask.version) - return if metadata.nil? - - add_error "#{cask.version} is a GitLab prerelease" if Date.parse(metadata["released_at"]) > Date.today + error = SharedAudits.gitlab_release(user, repo, cask.version) + add_error error if error end def check_github_repository_archived diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index a8e691fe5d..e5e3958b12 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -701,8 +701,6 @@ module Homebrew "libepoxy" => "1.5", }.freeze - GITLAB_PRERELEASE_ALLOWLIST = {}.freeze - # version_prefix = stable_version_string.sub(/\d+$/, "") # version_prefix = stable.version.major_minor @@ -786,11 +784,9 @@ module Homebrew owner = Regexp.last_match(1) repo = Regexp.last_match(2) - return unless @online && (release = SharedAudits.gitlab_release_data(owner, repo, stable.version)) - - release_date = Date.parse(release["released_at"]) - if release_date > Date.today && (GITLAB_PRERELEASE_ALLOWLIST[formula.name] != formula.version) - problem "#{stable.version} is a GitLab prerelease" + if @online + error = SharedAudits.gitlab_release(owner, repo, stable.version, formula: formula) + problem error if error end when %r{^https://github.com/([\w-]+)/([\w-]+)} owner = Regexp.last_match(1) diff --git a/Library/Homebrew/utils/shared_audits.rb b/Library/Homebrew/utils/shared_audits.rb index 26cf8ec3e9..bd60814e7e 100644 --- a/Library/Homebrew/utils/shared_audits.rb +++ b/Library/Homebrew/utils/shared_audits.rb @@ -84,6 +84,18 @@ module SharedAudits @gitlab_release_data[id] end + GITLAB_PRERELEASE_ALLOWLIST = {}.freeze + + def gitlab_release(user, repo, tag, formula: nil) + release = gitlab_release_data(user, repo, tag) + return unless release + + return if Date.parse(release["released_at"]) <= Date.today + return if formula && GITLAB_PRERELEASE_ALLOWLIST[formula.name] == formula.version + + "#{tag} is a GitLab pre-release." + end + def github(user, repo) metadata = github_repo_data(user, repo) From 184c80b16df08901689897383e73c8811289cb9a Mon Sep 17 00:00:00 2001 From: Markus Reiter Date: Sat, 5 Sep 2020 18:26:07 +0200 Subject: [PATCH 2/2] Improve detection of GitLab tag. --- Library/Homebrew/dev-cmd/audit.rb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index e5e3958b12..b10e97e4ca 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -784,8 +784,14 @@ module Homebrew owner = Regexp.last_match(1) repo = Regexp.last_match(2) + tag = url.match(%r{^https://gitlab\.com/[\w-]+/[\w-]+/-/archive/([^/]+)/}) + .to_a + .second + tag ||= stable.specs[:tag] + tag ||= stable.version + if @online - error = SharedAudits.gitlab_release(owner, repo, stable.version, formula: formula) + error = SharedAudits.gitlab_release(owner, repo, tag, formula: formula) problem error if error end when %r{^https://github.com/([\w-]+)/([\w-]+)}