Skip to content

Commit 7c67b47

Browse files
authored
Merge pull request #20375 from Homebrew/cask_prelude_download_queue
Add `Cask::Installer#prelude` to check before download queueing
2 parents 3f3ddb8 + 64311c2 commit 7c67b47

File tree

4 files changed

+31
-12
lines changed

4 files changed

+31
-12
lines changed

Library/Homebrew/cask/installer.rb

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ def initialize(cask, command: SystemCommand, force: false, adopt: false,
4646
@verify_download_integrity = verify_download_integrity
4747
@quiet = quiet
4848
@download_queue = download_queue
49+
@ran_prelude = T.let(false, T::Boolean)
4950
end
5051

5152
sig { returns(T::Boolean) }
@@ -140,8 +141,7 @@ def install
140141
old_config = @cask.config
141142
predecessor = @cask if reinstall? && @cask.installed?
142143

143-
check_deprecate_disable
144-
check_conflicts
144+
prelude
145145

146146
print caveats
147147
fetch
@@ -791,6 +791,16 @@ def forbidden_cask_and_formula_check
791791
)
792792
end
793793

794+
sig { void }
795+
def prelude
796+
return if @ran_prelude
797+
798+
check_deprecate_disable
799+
check_conflicts
800+
801+
@ran_prelude = true
802+
end
803+
794804
sig { void }
795805
def enqueue_downloads
796806
download_queue = @download_queue

Library/Homebrew/cask/reinstall.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ def self.reinstall_casks(
3030
end
3131

3232
if download_queue
33+
cask_installers.each(&:prelude)
34+
3335
oh1 "Fetching downloads for: #{casks.map { |cask| Formatter.identifier(cask.full_name) }.to_sentence}",
3436
truncate: false
3537
cask_installers.each(&:enqueue_downloads)

Library/Homebrew/cask/upgrade.rb

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -115,19 +115,22 @@ def self.upgrade_casks!(
115115
download_queue = Homebrew::DownloadQueue.new(pour: true)
116116

117117
fetchable_casks = upgradable_casks.map(&:last)
118-
fetchable_casks_sentence = fetchable_casks.map { |cask| Formatter.identifier(cask.full_name) }.to_sentence
119-
oh1 "Fetching downloads for: #{fetchable_casks_sentence}", truncate: false
120-
121-
fetchable_casks.each do |cask|
118+
fetchable_cask_installers = fetchable_casks.map do |cask|
122119
# This is significantly easier given the weird difference in Sorbet signatures here.
123120
# rubocop:disable Style/DoubleNegation
124121
Installer.new(cask, binaries: !!binaries, verbose: !!verbose, force: !!force,
125122
skip_cask_deps: !!skip_cask_deps, require_sha: !!require_sha,
126123
upgrade: true, quarantine:, download_queue:)
127-
.enqueue_downloads
128124
# rubocop:enable Style/DoubleNegation
129125
end
130126

127+
fetchable_cask_installers.each(&:prelude)
128+
129+
fetchable_casks_sentence = fetchable_casks.map { |cask| Formatter.identifier(cask.full_name) }.to_sentence
130+
oh1 "Fetching downloads for: #{fetchable_casks_sentence}", truncate: false
131+
132+
fetchable_cask_installers.each(&:enqueue_downloads)
133+
131134
download_queue.fetch
132135
end
133136

Library/Homebrew/cmd/install.rb

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -248,17 +248,21 @@ def run
248248
fetch_casks = Homebrew::EnvConfig.no_install_upgrade? ? new_casks : casks
249249

250250
if download_queue
251-
fetch_casks_sentence = fetch_casks.map { |cask| Formatter.identifier(cask.full_name) }.to_sentence
252-
oh1 "Fetching downloads for: #{fetch_casks_sentence}", truncate: false
253-
254-
fetch_casks.each do |cask|
251+
fetch_cask_installers = fetch_casks.map do |cask|
255252
Cask::Installer.new(cask, binaries: args.binaries?, verbose: args.verbose?,
256253
force: args.force?, skip_cask_deps: args.skip_cask_deps?,
257254
require_sha: args.require_sha?, reinstall: true,
258255
quarantine: args.quarantine?, zap: args.zap?, download_queue:)
259-
.enqueue_downloads
260256
end
261257

258+
# Run prelude checks for all casks before enqueueing downloads
259+
fetch_cask_installers.each(&:prelude)
260+
261+
fetch_casks_sentence = fetch_casks.map { |cask| Formatter.identifier(cask.full_name) }.to_sentence
262+
oh1 "Fetching downloads for: #{fetch_casks_sentence}", truncate: false
263+
264+
fetch_cask_installers.each(&:enqueue_downloads)
265+
262266
download_queue.fetch
263267
end
264268

0 commit comments

Comments
 (0)