Merge pull request #15943 from apainintheneck/handle-nil-urls-in-cask-installer
Handle nil cask urls caused by unsupported macOS version
This commit is contained in:
commit
db1267bdff
@ -277,7 +277,7 @@ module Cask
|
||||
sha256 json_cask[:sha256]
|
||||
end
|
||||
|
||||
url json_cask[:url], **json_cask.fetch(:url_specs, {})
|
||||
url json_cask[:url], **json_cask.fetch(:url_specs, {}) if json_cask[:url].present?
|
||||
appcast json_cask[:appcast] if json_cask[:appcast].present?
|
||||
json_cask[:name].each do |cask_name|
|
||||
name cask_name
|
||||
|
||||
@ -24,6 +24,8 @@ module Cask
|
||||
|
||||
sig { override.returns(T.nilable(::URL)) }
|
||||
def url
|
||||
return if cask.url.nil?
|
||||
|
||||
@url ||= ::URL.new(cask.url.to_s, cask.url.specs)
|
||||
end
|
||||
|
||||
|
||||
@ -64,12 +64,12 @@ module Cask
|
||||
odebug "Cask::Installer#fetch"
|
||||
|
||||
load_cask_from_source_api! if @cask.loaded_from_api? && @cask.caskfile_only?
|
||||
|
||||
verify_has_sha if require_sha? && !force?
|
||||
check_requirements
|
||||
|
||||
download(quiet: quiet, timeout: timeout)
|
||||
|
||||
satisfy_dependencies
|
||||
satisfy_cask_and_formula_dependencies
|
||||
end
|
||||
|
||||
def stage
|
||||
@ -253,25 +253,19 @@ on_request: true)
|
||||
end
|
||||
end
|
||||
|
||||
# TODO: move dependencies to a separate class,
|
||||
# dependencies should also apply for `brew cask stage`,
|
||||
# override dependencies with `--force` or perhaps `--force-deps`
|
||||
def satisfy_dependencies
|
||||
return unless @cask.depends_on
|
||||
|
||||
macos_dependencies
|
||||
arch_dependencies
|
||||
cask_and_formula_dependencies
|
||||
def check_requirements
|
||||
check_macos_requirements
|
||||
check_arch_requirements
|
||||
end
|
||||
|
||||
def macos_dependencies
|
||||
def check_macos_requirements
|
||||
return unless @cask.depends_on.macos
|
||||
return if @cask.depends_on.macos.satisfied?
|
||||
|
||||
raise CaskError, @cask.depends_on.macos.message(type: :cask)
|
||||
end
|
||||
|
||||
def arch_dependencies
|
||||
def check_arch_requirements
|
||||
return if @cask.depends_on.arch.nil?
|
||||
|
||||
@current_arch ||= { type: Hardware::CPU.type, bits: Hardware::CPU.bits }
|
||||
@ -286,7 +280,7 @@ on_request: true)
|
||||
"but you are running #{@current_arch}."
|
||||
end
|
||||
|
||||
def collect_cask_and_formula_dependencies
|
||||
def cask_and_formula_dependencies
|
||||
return @cask_and_formula_dependencies if @cask_and_formula_dependencies
|
||||
|
||||
graph = ::Utils::TopologicalHash.graph_package_dependencies(@cask)
|
||||
@ -305,7 +299,7 @@ on_request: true)
|
||||
end
|
||||
|
||||
def missing_cask_and_formula_dependencies
|
||||
collect_cask_and_formula_dependencies.reject do |cask_or_formula|
|
||||
cask_and_formula_dependencies.reject do |cask_or_formula|
|
||||
installed = if cask_or_formula.respond_to?(:any_version_installed?)
|
||||
cask_or_formula.any_version_installed?
|
||||
else
|
||||
@ -315,10 +309,10 @@ on_request: true)
|
||||
end
|
||||
end
|
||||
|
||||
def cask_and_formula_dependencies
|
||||
def satisfy_cask_and_formula_dependencies
|
||||
return if installed_as_dependency?
|
||||
|
||||
formulae_and_casks = collect_cask_and_formula_dependencies
|
||||
formulae_and_casks = cask_and_formula_dependencies
|
||||
|
||||
return if formulae_and_casks.empty?
|
||||
|
||||
|
||||
@ -167,6 +167,11 @@ module Homebrew
|
||||
SimulateSystem.with os: os, arch: arch do
|
||||
cask = Cask::CaskLoader.load(ref)
|
||||
|
||||
if cask.depends_on.macos&.satisfied? == false
|
||||
opoo "#{cask.token}: #{cask.depends_on.macos.message(type: :cask)}"
|
||||
next
|
||||
end
|
||||
|
||||
quarantine = args.quarantine?
|
||||
quarantine = true if quarantine.nil?
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user