From 670eb3d02d0c503397ba090485135319e9d5c948 Mon Sep 17 00:00:00 2001 From: Markus Reiter Date: Tue, 20 Feb 2024 18:08:55 +0100 Subject: [PATCH] Remove `CaskLoader::tap_paths`. --- Library/Homebrew/cask/cask_loader.rb | 12 ++++-------- Library/Homebrew/cask/caskroom.rb | 5 ++--- Library/Homebrew/cask/exceptions.rb | 12 +++++++++++- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/Library/Homebrew/cask/cask_loader.rb b/Library/Homebrew/cask/cask_loader.rb index 42b57f98e3..fce987841e 100644 --- a/Library/Homebrew/cask/cask_loader.rb +++ b/Library/Homebrew/cask/cask_loader.rb @@ -18,7 +18,7 @@ module Cask extend T::Helpers interface! - sig { abstract.params(config: Config).returns(Cask) } + sig { abstract.params(config: T.nilable(Config)).returns(Cask) } def load(config:); end end @@ -118,6 +118,7 @@ module Cask @tap = Tap.from_path(path) || Homebrew::API.tap_from_source_download(path) end + sig { override.params(config: T.nilable(Config)).returns(Cask) } def load(config:) raise CaskUnavailableError.new(token, "'#{path}' does not exist.") unless path.exist? raise CaskUnavailableError.new(token, "'#{path}' is not readable.") unless path.readable? @@ -220,6 +221,7 @@ module Cask super cask end + sig { override.params(config: T.nilable(Config)).returns(Cask) } def load(config:) raise TapCaskUnavailableError.new(tap, token) unless T.must(tap).installed? @@ -475,7 +477,7 @@ module Cask when 1 loaders.first when 2..Float::INFINITY - raise TapCaskAmbiguityError.new(token, loaders.map(&:tap)) + raise TapCaskAmbiguityError.new(token, loaders) end end end @@ -584,12 +586,6 @@ module Cask find_cask_in_tap(token.to_s.downcase, CoreCaskTap.instance) end - def self.tap_paths(token) - token = token.to_s.downcase - - Tap.map { |tap| find_cask_in_tap(token, tap) }.select(&:exist?) - end - def self.find_cask_in_tap(token, tap) filename = "#{token}.rb" diff --git a/Library/Homebrew/cask/caskroom.rb b/Library/Homebrew/cask/caskroom.rb index 43abdfcd1f..9a6f7bab33 100644 --- a/Library/Homebrew/cask/caskroom.rb +++ b/Library/Homebrew/cask/caskroom.rb @@ -54,9 +54,8 @@ module Cask def self.casks(config: nil) tokens.sort.map do |token| CaskLoader.load(token, config: config, warn: false) - rescue TapCaskAmbiguityError - tap_path = CaskLoader.tap_paths(token).first - CaskLoader::FromPathLoader.new(tap_path).load(config: config) + rescue TapCaskAmbiguityError => e + T.must(e.loaders.first).load(config: config) rescue # Don't blow up because of a single unavailable cask. nil diff --git a/Library/Homebrew/cask/exceptions.rb b/Library/Homebrew/cask/exceptions.rb index 52091358f2..8ec351cb59 100644 --- a/Library/Homebrew/cask/exceptions.rb +++ b/Library/Homebrew/cask/exceptions.rb @@ -131,7 +131,17 @@ module Cask # # @api private class TapCaskAmbiguityError < CaskError - def initialize(token, taps) + sig { returns(String) } + attr_reader :token + + sig { returns(T::Array[CaskLoader::FromNameLoader]) } + attr_reader :loaders + + sig { params(token: String, loaders: T::Array[CaskLoader::FromNameLoader]).void } + def initialize(token, loaders) + @loaders = loaders + + taps = loaders.map(&:tap) casks = taps.map { |tap| "#{tap}/#{token}" } cask_list = casks.sort.map { |f| "\n * #{f}" }.join