Merge pull request #8615 from reitermarkus/audit-gitlab-release

Add `SharedAudits::gitlab_release`.
This commit is contained in:
Markus Reiter 2020-09-05 18:54:26 +02:00 committed by GitHub
commit daeec79b9f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 22 additions and 10 deletions

View File

@ -481,10 +481,8 @@ module Cask
odebug "Auditing GitLab prerelease" odebug "Auditing GitLab prerelease"
metadata = SharedAudits.gitlab_release_data(user, repo, cask.version) error = SharedAudits.gitlab_release(user, repo, cask.version)
return if metadata.nil? add_error error if error
add_error "#{cask.version} is a GitLab prerelease" if Date.parse(metadata["released_at"]) > Date.today
end end
def check_github_repository_archived def check_github_repository_archived

View File

@ -701,8 +701,6 @@ module Homebrew
"libepoxy" => "1.5", "libepoxy" => "1.5",
}.freeze }.freeze
GITLAB_PRERELEASE_ALLOWLIST = {}.freeze
# version_prefix = stable_version_string.sub(/\d+$/, "") # version_prefix = stable_version_string.sub(/\d+$/, "")
# version_prefix = stable.version.major_minor # version_prefix = stable.version.major_minor
@ -786,11 +784,15 @@ module Homebrew
owner = Regexp.last_match(1) owner = Regexp.last_match(1)
repo = Regexp.last_match(2) repo = Regexp.last_match(2)
return unless @online && (release = SharedAudits.gitlab_release_data(owner, repo, stable.version)) tag = url.match(%r{^https://gitlab\.com/[\w-]+/[\w-]+/-/archive/([^/]+)/})
.to_a
.second
tag ||= stable.specs[:tag]
tag ||= stable.version
release_date = Date.parse(release["released_at"]) if @online
if release_date > Date.today && (GITLAB_PRERELEASE_ALLOWLIST[formula.name] != formula.version) error = SharedAudits.gitlab_release(owner, repo, tag, formula: formula)
problem "#{stable.version} is a GitLab prerelease" problem error if error
end end
when %r{^https://github.com/([\w-]+)/([\w-]+)} when %r{^https://github.com/([\w-]+)/([\w-]+)}
owner = Regexp.last_match(1) owner = Regexp.last_match(1)

View File

@ -84,6 +84,18 @@ module SharedAudits
@gitlab_release_data[id] @gitlab_release_data[id]
end 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) def github(user, repo)
metadata = github_repo_data(user, repo) metadata = github_repo_data(user, repo)