ExtractPlist: Modify #find_versions url usage

This commit is contained in:
Sam Ford 2022-06-12 15:27:31 -04:00
parent 077fb350a5
commit d7a26cd6d3
No known key found for this signature in database
GPG Key ID: 7AF5CBEE1DD6F76D
4 changed files with 18 additions and 21 deletions

View File

@ -20,7 +20,7 @@ module Cask
attr_reader :token, :sourcefile_path, :source, :config, :default_config attr_reader :token, :sourcefile_path, :source, :config, :default_config
attr_accessor :download attr_accessor :download, :allow_reassignment
def self.all def self.all
Tap.flat_map(&:cask_files).map do |f| Tap.flat_map(&:cask_files).map do |f|
@ -38,11 +38,12 @@ module Cask
@tap @tap
end end
def initialize(token, sourcefile_path: nil, source: nil, tap: nil, config: nil, &block) def initialize(token, sourcefile_path: nil, source: nil, tap: nil, config: nil, allow_reassignment: false, &block)
@token = token @token = token
@sourcefile_path = sourcefile_path @sourcefile_path = sourcefile_path
@source = source @source = source
@tap = tap @tap = tap
@allow_reassignment = allow_reassignment
@block = block @block = block
@default_config = config || Config.new @default_config = config || Config.new

View File

@ -112,7 +112,7 @@ module Cask
def set_unique_stanza(stanza, should_return) def set_unique_stanza(stanza, should_return)
return instance_variable_get("@#{stanza}") if should_return return instance_variable_get("@#{stanza}") if should_return
if instance_variable_defined?("@#{stanza}") if !@cask.allow_reassignment && instance_variable_defined?("@#{stanza}")
raise CaskInvalidError.new(cask, "'#{stanza}' stanza may only appear once.") raise CaskInvalidError.new(cask, "'#{stanza}' stanza may only appear once.")
end end
@ -137,7 +137,7 @@ module Cask
return unless default return unless default
unless @language_blocks.default.nil? if !@cask.allow_reassignment && @language_blocks.default.present?
raise CaskInvalidError.new(cask, "Only one default language may be defined.") raise CaskInvalidError.new(cask, "Only one default language may be defined.")
end end
@ -294,7 +294,9 @@ module Cask
@livecheck ||= Livecheck.new(self) @livecheck ||= Livecheck.new(self)
return @livecheck unless block return @livecheck unless block
raise CaskInvalidError.new(cask, "'livecheck' stanza may only appear once.") if @livecheckable if !@cask.allow_reassignment && @livecheckable
raise CaskInvalidError.new(cask, "'livecheck' stanza may only appear once.")
end
@livecheckable = true @livecheckable = true
@livecheck.instance_eval(&block) @livecheck.instance_eval(&block)

View File

@ -103,14 +103,14 @@ module Homebrew
match_data = { matches: {}, regex: regex, url: url } match_data = { matches: {}, regex: regex, url: url }
if url && url != cask.url.to_s unversioned_cask_checker = if url.present? && url != cask.url.to_s
cask_object_for_livecheck = Cask::Cask.new("livecheck-cask", config: cask.config) do # Create a copy of the `cask` that uses the `livecheck` block URL
url url.to_s cask_copy = Cask::CaskLoader.load(cask.full_name)
end cask_copy.allow_reassignment = true
cask_copy.url { url }
unversioned_cask_checker = UnversionedCaskChecker.new(cask, livecheck_url: cask_object_for_livecheck) UnversionedCaskChecker.new(cask_copy)
else else
unversioned_cask_checker = UnversionedCaskChecker.new(cask) UnversionedCaskChecker.new(cask)
end end
items = unversioned_cask_checker.all_versions.transform_values { |v| Item.new(bundle_version: v) } items = unversioned_cask_checker.all_versions.transform_values { |v| Item.new(bundle_version: v) }

View File

@ -15,21 +15,15 @@ module Homebrew
sig { returns(Cask::Cask) } sig { returns(Cask::Cask) }
attr_reader :cask attr_reader :cask
attr_reader :livecheck_url
sig { params(cask: Cask::Cask, livecheck_url: T.nilable(Cask::Cask)).void } sig { params(cask: Cask::Cask).void }
def initialize(cask, livecheck_url: nil) def initialize(cask)
@cask = cask @cask = cask
@livecheck_url = livecheck_url
end end
sig { returns(Cask::Installer) } sig { returns(Cask::Installer) }
def installer def installer
@installer ||= if livecheck_url @installer ||= Cask::Installer.new(cask, verify_download_integrity: false)
Cask::Installer.new(livecheck_url, verify_download_integrity: false)
else
Cask::Installer.new(cask, verify_download_integrity: false)
end
end end
sig { returns(T::Array[Cask::Artifact::App]) } sig { returns(T::Array[Cask::Artifact::App]) }