Cleanup Cask::Caskroom::casks

This commit is contained in:
Rylan Polster 2022-06-17 15:22:41 -04:00
parent 38e1af8576
commit 55da9f293d
No known key found for this signature in database
GPG Key ID: 46A744940CFF4D64
3 changed files with 19 additions and 12 deletions

View File

@ -236,10 +236,7 @@ module Cask
when 2..Float::INFINITY
loaders = possible_tap_casks.map(&FromTapPathLoader.method(:new))
raise CaskError, <<~EOS
Cask #{ref} exists in multiple taps:
#{loaders.map { |loader| " #{loader.tap}/#{loader.token}" }.join("\n")}
EOS
raise TapCaskAmbiguityError.new(ref, loaders)
end
possible_installed_cask = Cask.new(ref)

View File

@ -47,14 +47,10 @@ module Cask
token = path.basename.to_s
begin
if (tap_path = CaskLoader.tap_paths(token).first)
CaskLoader::FromTapPathLoader.new(tap_path).load(config: config)
elsif (caskroom_path = Pathname.glob(path.join(".metadata/*/*/*/*.rb")).first) &&
(!Homebrew::EnvConfig.install_from_api? || !Homebrew::API::CaskSource.available?(token))
CaskLoader::FromPathLoader.new(caskroom_path).load(config: config)
else
CaskLoader.load(token, config: config)
end
CaskLoader.load(token, config: config)
rescue TapCaskAmbiguityError
tap_path = CaskLoader.tap_paths(token).first
CaskLoader::FromTapPathLoader.new(tap_path).load(config: config)
rescue CaskUnavailableError
# Don't blow up because of a single unavailable cask.
nil

View File

@ -124,6 +124,20 @@ module Cask
end
end
# Error when a cask with the same name is found in multiple taps.
#
# @api private
class TapCaskAmbiguityError < CaskError
extend T::Sig
def initialize(ref, loaders)
super <<~EOS
Cask #{ref} exists in multiple taps:
#{loaders.map { |loader| " #{loader.tap}/#{loader.token}" }.join("\n")}
EOS
end
end
# Error when a cask already exists.
#
# @api private