diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index 7565ffd665..32aaca5543 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -777,7 +777,7 @@ module Homebrew .split(".", 3) .map(&:to_i) - case stable.url + case (url = stable.url) when /[\d\._-](alpha|beta|rc\d)/ matched = Regexp.last_match(1) version_prefix = stable_version_string.sub(/\d+$/, "") @@ -795,16 +795,23 @@ module Homebrew return if stable_url_minor_version.even? problem "#{stable.version} is a development release" - when %r{^https://github.com/} - owner = stable.url.match(%r{https://github.com/(.*?)(/)})[1] - tag = stable.url.match(%r{https://github.com/.*(download|archive)/(\D*(\d*.){2}\d*)})[2] + when %r{^https://github.com/([\w-]+)/([\w-]+)/} + owner = Regexp.last_match(1) + repo = Regexp.last_match(2) + tag = url.match(%r{^https://github\.com/[\w-]+/[\w-]+/archive/([^/]+)\.(tar\.gz|zip)$}) + .to_a + .second + tag ||= url.match(%r{^https://github\.com/[\w-]+/[\w-]+/releases/download/([^/]+)/}) + .to_a + .second + begin - if GitHub.open_api("#{GitHub::API_URL}/repos/#{owner}/#{stable.full_name}/releases/tags/#{tag}")\ - ["prerelease"] - problem "#{tag} is a GitHub prerelease" + if (release = GitHub.open_api("#{GitHub::API_URL}/repos/#{owner}/#{repo}/releases/tags/#{tag}")) + problem "#{tag} is a GitHub prerelease" if release["prerelease"] end - rescue GitHub::HTTPNotFoundError => e - opoo e.message + rescue GitHub::HTTPNotFoundError + # No-op if we can't find the release. + nil end end end