fix: Allow Formula.url with no args to get url
This commit is contained in:
parent
e532dea382
commit
e58486cd4c
@ -67,7 +67,7 @@ class DependencyCollector
|
||||
def cache_key(spec)
|
||||
if spec.is_a?(Resource)
|
||||
if spec.download_strategy <= CurlDownloadStrategy
|
||||
return "#{spec.download_strategy}#{File.extname(spec.url).split("?").first}"
|
||||
return "#{spec.download_strategy}#{File.extname(T.must(spec.url)).split("?").first}"
|
||||
end
|
||||
|
||||
return spec.download_strategy
|
||||
|
||||
@ -156,7 +156,7 @@ module Homebrew
|
||||
new_hash = args.sha256
|
||||
new_tag = args.tag
|
||||
new_revision = args.revision
|
||||
old_url = formula_spec.url
|
||||
old_url = T.must(formula_spec.url)
|
||||
old_tag = formula_spec.specs[:tag]
|
||||
old_formula_version = formula_version(formula)
|
||||
old_version = old_formula_version.to_s
|
||||
@ -234,7 +234,7 @@ module Homebrew
|
||||
replacement_pairs += if new_url_hash.present?
|
||||
[
|
||||
[
|
||||
/#{Regexp.escape(formula_spec.url)}/,
|
||||
/#{Regexp.escape(T.must(formula_spec.url))}/,
|
||||
new_url,
|
||||
],
|
||||
[
|
||||
@ -256,7 +256,7 @@ module Homebrew
|
||||
elsif new_url.present?
|
||||
[
|
||||
[
|
||||
/#{Regexp.escape(formula_spec.url)}/,
|
||||
/#{Regexp.escape(T.must(formula_spec.url))}/,
|
||||
new_url,
|
||||
],
|
||||
[
|
||||
|
||||
@ -12,7 +12,7 @@ module Downloadable
|
||||
abstract!
|
||||
requires_ancestor { Kernel }
|
||||
|
||||
sig { overridable.returns(T.nilable(URL)) }
|
||||
sig { overridable.returns(T.any(NilClass, String, URL)) }
|
||||
attr_reader :url
|
||||
|
||||
sig { overridable.returns(T.nilable(Checksum)) }
|
||||
|
||||
@ -3650,8 +3650,8 @@ class Formula
|
||||
# ```
|
||||
#
|
||||
# @api public
|
||||
sig { params(val: String, specs: T::Hash[Symbol, T.any(String, Symbol)]).void }
|
||||
def url(val, specs = {}) = stable.url(val, specs)
|
||||
sig { params(val: String, specs: T::Hash[Symbol, T.anything]).returns(String) }
|
||||
def url(val = T.unsafe(nil), specs = {}) = stable.url(val, specs)
|
||||
|
||||
# The version string for the {.stable} version of the formula.
|
||||
# The version is autodetected from the URL and/or tag so only needs to be
|
||||
|
||||
@ -186,6 +186,7 @@ class Resource
|
||||
@checksum = Checksum.new(val)
|
||||
end
|
||||
|
||||
sig { override.params(val: T.nilable(String), specs: T.anything).returns(T.nilable(String)) }
|
||||
def url(val = nil, **specs)
|
||||
return @url&.to_s if val.nil?
|
||||
|
||||
@ -198,6 +199,7 @@ class Resource
|
||||
@url = URL.new(val, specs)
|
||||
@downloader = nil
|
||||
@download_strategy = @url.download_strategy
|
||||
@url.to_s
|
||||
end
|
||||
|
||||
sig { override.params(val: T.nilable(T.any(String, Version))).returns(T.nilable(Version)) }
|
||||
@ -239,6 +241,7 @@ class Resource
|
||||
|
||||
def determine_url_mirrors
|
||||
extra_urls = []
|
||||
url = T.must(self.url)
|
||||
|
||||
# glibc-bootstrap
|
||||
if url.start_with?("https://github.com/Homebrew/glibc-bootstrap/releases/download")
|
||||
|
||||
@ -9,7 +9,7 @@ module Homebrew
|
||||
attr_reader :downloadable
|
||||
private :downloadable
|
||||
|
||||
sig { override.returns(T.nilable(URL)) }
|
||||
sig { override.returns(T.any(NilClass, String, URL)) }
|
||||
def url = downloadable.url
|
||||
|
||||
sig { override.returns(T.nilable(Checksum)) }
|
||||
|
||||
@ -102,11 +102,13 @@ class SoftwareSpec
|
||||
patches.each { |p| p.owner = self }
|
||||
end
|
||||
|
||||
sig { override.params(val: T.nilable(String), specs: T::Hash[Symbol, T.anything]).returns(T.nilable(String)) }
|
||||
def url(val = nil, specs = {})
|
||||
return @resource.url if val.nil?
|
||||
|
||||
@resource.url(val, **specs)
|
||||
dependency_collector.add(@resource)
|
||||
if val
|
||||
@resource.url(val, **specs)
|
||||
dependency_collector.add(@resource)
|
||||
end
|
||||
@resource.url
|
||||
end
|
||||
|
||||
def bottle_defined?
|
||||
|
||||
@ -535,6 +535,14 @@ RSpec.describe Formula do
|
||||
end
|
||||
end
|
||||
|
||||
specify ".url" do
|
||||
f = formula do
|
||||
url "foo-1.0"
|
||||
end
|
||||
|
||||
expect(f.class.url).to eq("foo-1.0")
|
||||
end
|
||||
|
||||
specify "spec integration" do
|
||||
f = formula do
|
||||
homepage "https://brew.sh"
|
||||
|
||||
@ -285,7 +285,7 @@ module PyPI
|
||||
url = if stable.specs[:tag].present?
|
||||
"git+#{stable.url}@#{stable.specs[:tag]}"
|
||||
else
|
||||
stable.url
|
||||
T.must(stable.url)
|
||||
end
|
||||
Package.new(url, is_url: true, python_name:)
|
||||
end
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user