diff --git a/Library/Homebrew/cask/cask_loader.rb b/Library/Homebrew/cask/cask_loader.rb index c343f491db..7385337812 100644 --- a/Library/Homebrew/cask/cask_loader.rb +++ b/Library/Homebrew/cask/cask_loader.rb @@ -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 diff --git a/Library/Homebrew/cask/installer.rb b/Library/Homebrew/cask/installer.rb index 5c27a9ed29..5d6e45efab 100644 --- a/Library/Homebrew/cask/installer.rb +++ b/Library/Homebrew/cask/installer.rb @@ -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,13 @@ on_request: true) end end - def cask_and_formula_dependencies + # 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_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?