Skip to content

Commit

Permalink
Merge pull request #16712 from reitermarkus/caskloader-tap-paths
Browse files Browse the repository at this point in the history
Remove `CaskLoader::tap_paths`.
  • Loading branch information
reitermarkus committed Feb 20, 2024
2 parents 14ba271 + 670eb3d commit 28ad3f7
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 12 deletions.
12 changes: 4 additions & 8 deletions Library/Homebrew/cask/cask_loader.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ module ILoader
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

Expand Down Expand Up @@ -118,6 +118,7 @@ def initialize(path, token: T.unsafe(nil))
@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?
Expand Down Expand Up @@ -220,6 +221,7 @@ def initialize(tapped_token)
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?

Expand Down Expand Up @@ -475,7 +477,7 @@ def self.try_new(ref, warn: false)
when 1
loaders.first
when 2..Float::INFINITY
raise TapCaskAmbiguityError.new(token, loaders.map(&:tap))
raise TapCaskAmbiguityError.new(token, loaders)
end
end
end
Expand Down Expand Up @@ -584,12 +586,6 @@ def self.default_path(token)
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"

Expand Down
5 changes: 2 additions & 3 deletions Library/Homebrew/cask/caskroom.rb
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,8 @@ def self.ensure_caskroom_exists
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
Expand Down
12 changes: 11 additions & 1 deletion Library/Homebrew/cask/exceptions.rb
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,17 @@ def to_s
#
# @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

Expand Down

0 comments on commit 28ad3f7

Please sign in to comment.