2025-02-24 14:49:33 -08:00
|
|
|
# typed: strict
|
2023-04-10 22:07:06 +09:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
module Cask
|
|
|
|
class Reinstall
|
2025-02-24 14:49:33 -08:00
|
|
|
sig {
|
|
|
|
params(
|
|
|
|
casks: ::Cask::Cask, verbose: T::Boolean, force: T::Boolean, skip_cask_deps: T::Boolean, binaries: T::Boolean,
|
|
|
|
require_sha: T::Boolean, quarantine: T::Boolean, zap: T::Boolean
|
|
|
|
).void
|
|
|
|
}
|
2023-04-10 22:07:06 +09:00
|
|
|
def self.reinstall_casks(
|
|
|
|
*casks,
|
2025-02-24 14:49:33 -08:00
|
|
|
verbose: false,
|
|
|
|
force: false,
|
|
|
|
skip_cask_deps: false,
|
|
|
|
binaries: false,
|
|
|
|
require_sha: false,
|
|
|
|
quarantine: false,
|
|
|
|
zap: false
|
2023-04-10 22:07:06 +09:00
|
|
|
)
|
|
|
|
require "cask/installer"
|
|
|
|
|
|
|
|
quarantine = true if quarantine.nil?
|
|
|
|
|
2025-07-29 14:49:08 +01:00
|
|
|
download_queue = Homebrew::DownloadQueue.new(pour: true) if Homebrew::EnvConfig.download_concurrency > 1
|
|
|
|
cask_installers = casks.map do |cask|
|
|
|
|
Installer.new(cask, binaries:, verbose:, force:, skip_cask_deps:, require_sha:, reinstall: true,
|
|
|
|
quarantine:, zap:, download_queue:)
|
2023-04-10 22:07:06 +09:00
|
|
|
end
|
2025-07-29 14:49:08 +01:00
|
|
|
|
|
|
|
if download_queue
|
|
|
|
oh1 "Fetching downloads for: #{casks.map { |cask| Formatter.identifier(cask.full_name) }.to_sentence}",
|
|
|
|
truncate: false
|
|
|
|
cask_installers.each(&:enqueue_downloads)
|
|
|
|
download_queue.fetch
|
|
|
|
end
|
|
|
|
|
|
|
|
cask_installers.each(&:install)
|
2023-04-10 22:07:06 +09:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|