Merge pull request #20375 from Homebrew/cask_prelude_download_queue

Add `Cask::Installer#prelude` to check before download queueing
This commit is contained in:
Mike McQuaid 2025-08-05 14:01:09 +00:00 committed by GitHub
commit 7c67b47a77
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 31 additions and 12 deletions

View File

@ -46,6 +46,7 @@ module Cask
@verify_download_integrity = verify_download_integrity
@quiet = quiet
@download_queue = download_queue
@ran_prelude = T.let(false, T::Boolean)
end
sig { returns(T::Boolean) }
@ -140,8 +141,7 @@ module Cask
old_config = @cask.config
predecessor = @cask if reinstall? && @cask.installed?
check_deprecate_disable
check_conflicts
prelude
print caveats
fetch
@ -791,6 +791,16 @@ on_request: true)
)
end
sig { void }
def prelude
return if @ran_prelude
check_deprecate_disable
check_conflicts
@ran_prelude = true
end
sig { void }
def enqueue_downloads
download_queue = @download_queue

View File

@ -30,6 +30,8 @@ module Cask
end
if download_queue
cask_installers.each(&:prelude)
oh1 "Fetching downloads for: #{casks.map { |cask| Formatter.identifier(cask.full_name) }.to_sentence}",
truncate: false
cask_installers.each(&:enqueue_downloads)

View File

@ -115,19 +115,22 @@ module Cask
download_queue = Homebrew::DownloadQueue.new(pour: true)
fetchable_casks = upgradable_casks.map(&:last)
fetchable_casks_sentence = fetchable_casks.map { |cask| Formatter.identifier(cask.full_name) }.to_sentence
oh1 "Fetching downloads for: #{fetchable_casks_sentence}", truncate: false
fetchable_casks.each do |cask|
fetchable_cask_installers = fetchable_casks.map do |cask|
# This is significantly easier given the weird difference in Sorbet signatures here.
# rubocop:disable Style/DoubleNegation
Installer.new(cask, binaries: !!binaries, verbose: !!verbose, force: !!force,
skip_cask_deps: !!skip_cask_deps, require_sha: !!require_sha,
upgrade: true, quarantine:, download_queue:)
.enqueue_downloads
# rubocop:enable Style/DoubleNegation
end
fetchable_cask_installers.each(&:prelude)
fetchable_casks_sentence = fetchable_casks.map { |cask| Formatter.identifier(cask.full_name) }.to_sentence
oh1 "Fetching downloads for: #{fetchable_casks_sentence}", truncate: false
fetchable_cask_installers.each(&:enqueue_downloads)
download_queue.fetch
end

View File

@ -248,17 +248,21 @@ module Homebrew
fetch_casks = Homebrew::EnvConfig.no_install_upgrade? ? new_casks : casks
if download_queue
fetch_casks_sentence = fetch_casks.map { |cask| Formatter.identifier(cask.full_name) }.to_sentence
oh1 "Fetching downloads for: #{fetch_casks_sentence}", truncate: false
fetch_casks.each do |cask|
fetch_cask_installers = fetch_casks.map do |cask|
Cask::Installer.new(cask, binaries: args.binaries?, verbose: args.verbose?,
force: args.force?, skip_cask_deps: args.skip_cask_deps?,
require_sha: args.require_sha?, reinstall: true,
quarantine: args.quarantine?, zap: args.zap?, download_queue:)
.enqueue_downloads
end
# Run prelude checks for all casks before enqueueing downloads
fetch_cask_installers.each(&:prelude)
fetch_casks_sentence = fetch_casks.map { |cask| Formatter.identifier(cask.full_name) }.to_sentence
oh1 "Fetching downloads for: #{fetch_casks_sentence}", truncate: false
fetch_cask_installers.each(&:enqueue_downloads)
download_queue.fetch
end