livecheck: refactor url preprocessing
This commit is contained in:
parent
5786a8937d
commit
59adb55338
@ -3,6 +3,7 @@
|
||||
|
||||
require "livecheck/strategy"
|
||||
require "ruby-progressbar"
|
||||
require "uri"
|
||||
|
||||
module Homebrew
|
||||
# The {Livecheck} module consists of methods used by the `brew livecheck`
|
||||
@ -13,20 +14,6 @@ module Homebrew
|
||||
module Livecheck
|
||||
module_function
|
||||
|
||||
GITHUB_SPECIAL_CASES = %w[
|
||||
api.github.com
|
||||
/latest
|
||||
mednafen
|
||||
camlp5
|
||||
kotlin
|
||||
osrm-backend
|
||||
prometheus
|
||||
pyenv-virtualenv
|
||||
sysdig
|
||||
shairport-sync
|
||||
yuicompressor
|
||||
].freeze
|
||||
|
||||
UNSTABLE_VERSION_KEYWORDS = %w[
|
||||
alpha
|
||||
beta
|
||||
@ -316,27 +303,23 @@ module Homebrew
|
||||
# Preprocesses and returns the URL used by livecheck.
|
||||
# @return [String]
|
||||
def preprocess_url(url)
|
||||
# Check for GitHub repos on github.com, not AWS
|
||||
url = url.sub("github.s3.amazonaws.com", "github.com") if url.include?("github")
|
||||
uri = URI.parse url
|
||||
host = uri.host
|
||||
path = uri.path.delete_prefix("/").delete_suffix(".git")
|
||||
|
||||
# Use repo from GitHub or GitLab inferred from download URL
|
||||
if url.include?("github.com") && GITHUB_SPECIAL_CASES.none? { |sc| url.include? sc }
|
||||
if url.include? "archive"
|
||||
url = url.sub(%r{/archive/.*}, ".git") if url.include? "github"
|
||||
elsif url.include? "releases"
|
||||
url = url.sub(%r{/releases/.*}, ".git")
|
||||
elsif url.include? "downloads"
|
||||
url = "#{Pathname.new(url.sub(%r{/downloads(.*)}, "\\1")).dirname}.git"
|
||||
elsif !url.end_with?(".git")
|
||||
# Truncate the URL at the user/repo part, if possible
|
||||
%r{(?<github_repo_url>(?:[a-z]+://)?github.com/[^/]+/[^/#]+)} =~ url
|
||||
url = github_repo_url if github_repo_url.present?
|
||||
if host == "github.s3.amazonaws.com"
|
||||
owner, repo = path.sub(%r{^downloads/}, "").split("/")
|
||||
return "https://github.com/#{owner}/#{repo}.git"
|
||||
end
|
||||
|
||||
url.delete_suffix!("/") if url.end_with?("/")
|
||||
url += ".git"
|
||||
end
|
||||
elsif url.include?("/-/archive/")
|
||||
url = url.sub(%r{/-/archive/.*$}i, ".git")
|
||||
if ["github.com", "tildegit.org", "gitlab.com"].include? host
|
||||
return url if path.match? %r{/releases/latest/?$}
|
||||
|
||||
owner, repo = path.split("/")
|
||||
url = "https://#{host}/#{owner}/#{repo}.git"
|
||||
elsif host == "git.sr.ht"
|
||||
owner, repo = path.split("/")
|
||||
url = "https://#{host}/#{owner}/#{repo}"
|
||||
end
|
||||
|
||||
url
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user