audit: cleanup shared audit exception handling

This commit is contained in:
Rylan Polster 2020-12-22 10:51:29 -05:00
parent ec4fe89a94
commit da29827a87
2 changed files with 14 additions and 29 deletions

View File

@ -64,16 +64,16 @@ module Homebrew
end end
list = list.keys if list.is_a? Hash list = list.keys if list.is_a? Hash
invalid_formulae = list.select do |formula_or_cask_name| invalid_formulae_casks = list.select do |formula_or_cask_name|
@formula_names.exclude?(formula_or_cask_name) && @cask_tokens.exclude?("#{@name}/#{formula_or_cask_name}") @formula_names.exclude?(formula_or_cask_name) && @cask_tokens.exclude?("#{@name}/#{formula_or_cask_name}")
end end
return if invalid_formulae.empty? return if invalid_formulae_casks.empty?
problem <<~EOS problem <<~EOS
#{list_file}.json references #{list_file}.json references
formulae or casks that are not found in the #{@name} tap. formulae or casks that are not found in the #{@name} tap.
Invalid formulae or casks: #{invalid_formulae.join(", ")} Invalid formulae or casks: #{invalid_formulae_casks.join(", ")}
EOS EOS
end end

View File

@ -35,25 +35,15 @@ module SharedAudits
release = github_release_data(user, repo, tag) release = github_release_data(user, repo, tag)
return unless release return unless release
if !release["prerelease"] && cask && tap_audit_exception(:github_prerelease_allowlist, cask.tap, cask.token) exception, name, version = if formula
return "#{tag} is not a GitHub pre-release but cask '#{cask.token}' is in the GitHub prerelease allowlist." [tap_audit_exception(:github_prerelease_allowlist, formula.tap, formula.name), formula.name, formula.version]
elsif cask
[tap_audit_exception(:github_prerelease_allowlist, cask.tap, cask.token), cask.token, cask.version]
end end
if release["prerelease"] return "#{tag} is a GitHub pre-release." if release["prerelease"] && [version, "all"].exclude?(exception)
exception = if formula
tap_audit_exception(:github_prerelease_allowlist, formula.tap, formula.name)
elsif cask
tap_audit_exception(:github_prerelease_allowlist, cask.tap, cask.token)
end
version = if formula
formula.version
elsif cask
cask.version
end
return if exception && [version, "all"].include?(exception)
return "#{tag} is a GitHub pre-release." return "#{tag} is not a GitHub pre-release but '#{name}' is in the GitHub prerelease allowlist." if exception
end
return "#{tag} is a GitHub draft." if release["draft"] return "#{tag} is a GitHub draft." if release["draft"]
end end
@ -83,17 +73,12 @@ module SharedAudits
return if Date.parse(release["released_at"]) <= Date.today return if Date.parse(release["released_at"]) <= Date.today
exception = if formula exception, version = if formula
tap_audit_exception(:gitlab_prerelease_allowlist, formula.tap, formula.name) [tap_audit_exception(:gitlab_prerelease_allowlist, formula.tap, formula.name), formula.version]
elsif cask elsif cask
tap_audit_exception(:gitlab_prerelease_allowlist, cask.tap, cask.token) [tap_audit_exception(:gitlab_prerelease_allowlist, cask.tap, cask.token), cask.version]
end end
version = if formula return if [version, "all"].include?(exception)
formula.version
elsif cask
cask.version
end
return if exception && [version, "all"].include?(exception)
"#{tag} is a GitLab pre-release." "#{tag} is a GitLab pre-release."
end end
@ -189,7 +174,7 @@ module SharedAudits
when Array when Array
list.include? formula_or_cask list.include? formula_or_cask
when Hash when Hash
return false unless list.include? formula_or_cask return false if list.exclude? formula_or_cask
return list[formula_or_cask] if value.blank? return list[formula_or_cask] if value.blank?
list[formula_or_cask] == value list[formula_or_cask] == value