Remove FromDefaultTapPathLoader
and FromDefaultTapLoader
.
This commit is contained in:
parent
d17aa66759
commit
6f28392d6e
@ -196,6 +196,9 @@ module Cask
|
|||||||
|
|
||||||
# Loads a cask from a specific tap.
|
# Loads a cask from a specific tap.
|
||||||
class FromTapLoader < FromPathLoader
|
class FromTapLoader < FromPathLoader
|
||||||
|
sig { returns(Tap) }
|
||||||
|
attr_reader :tap
|
||||||
|
|
||||||
sig {
|
sig {
|
||||||
params(ref: T.any(String, Pathname, Cask, URI::Generic), warn: T::Boolean)
|
params(ref: T.any(String, Pathname, Cask, URI::Generic), warn: T::Boolean)
|
||||||
.returns(T.nilable(T.attached_class))
|
.returns(T.nilable(T.attached_class))
|
||||||
@ -224,34 +227,6 @@ module Cask
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Load a cask from the default tap, using either a full or short token.
|
|
||||||
class FromDefaultTapLoader < FromTapLoader
|
|
||||||
sig {
|
|
||||||
params(ref: T.any(String, Pathname, Cask, URI::Generic), warn: T::Boolean)
|
|
||||||
.returns(T.nilable(T.attached_class))
|
|
||||||
}
|
|
||||||
def self.try_new(ref, warn: false)
|
|
||||||
ref = ref.to_s
|
|
||||||
return unless (token = ref[HOMEBREW_DEFAULT_TAP_CASK_REGEX, :token])
|
|
||||||
|
|
||||||
ref = "#{CoreCaskTap.instance}/#{token}"
|
|
||||||
|
|
||||||
token, tap, = CaskLoader.tap_cask_token_type(ref, warn: warn)
|
|
||||||
new("#{tap}/#{token}")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
# Loads a cask from the default tap path.
|
|
||||||
class FromDefaultTapPathLoader < FromPathLoader
|
|
||||||
sig {
|
|
||||||
params(ref: T.any(String, Pathname, Cask, URI::Generic), warn: T::Boolean)
|
|
||||||
.returns(T.nilable(T.attached_class))
|
|
||||||
}
|
|
||||||
def self.try_new(ref, warn: false)
|
|
||||||
super CaskLoader.default_path(ref)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
# Loads a cask from an existing {Cask} instance.
|
# Loads a cask from an existing {Cask} instance.
|
||||||
class FromInstanceLoader
|
class FromInstanceLoader
|
||||||
include ILoader
|
include ILoader
|
||||||
@ -464,14 +439,34 @@ module Cask
|
|||||||
|
|
||||||
# Loader which tries loading casks from tap paths, failing
|
# Loader which tries loading casks from tap paths, failing
|
||||||
# if the same token exists in multiple taps.
|
# if the same token exists in multiple taps.
|
||||||
class FromAmbiguousTapPathLoader < FromPathLoader
|
class FromNameLoader < FromPathLoader
|
||||||
def self.try_new(ref, warn: false)
|
def self.try_new(ref, warn: false)
|
||||||
case (possible_tap_casks = CaskLoader.tap_paths(ref)).count
|
return unless ref.is_a?(String)
|
||||||
|
return if ref.include?("/")
|
||||||
|
|
||||||
|
token = ref
|
||||||
|
|
||||||
|
loaders = Tap.map { |tap| FromTapLoader.try_new("#{tap}/#{token}", warn: warn) }
|
||||||
|
.compact
|
||||||
|
.select { _1.path.exist? }
|
||||||
|
|
||||||
|
case loaders.count
|
||||||
when 1
|
when 1
|
||||||
new(possible_tap_casks.first)
|
loaders.first
|
||||||
when 2..Float::INFINITY
|
when 2..Float::INFINITY
|
||||||
loaders = possible_tap_casks.map(&FromPathLoader.method(:new))
|
default_tap_loaders, other_loaders = *loaders.partition { _1.tap.core_cask_tap? }
|
||||||
raise TapCaskAmbiguityError.new(ref, loaders)
|
default_tap_loader = default_tap_loaders.first if default_tap_loaders.count
|
||||||
|
|
||||||
|
# Put default tap last so that the error message always recommends
|
||||||
|
# using the fully-qualified name for non-default taps.
|
||||||
|
taps = other_loaders.map(&:tap) + default_tap_loaders.map(&:tap)
|
||||||
|
|
||||||
|
error = TapCaskAmbiguityError.new(token, taps)
|
||||||
|
|
||||||
|
raise error unless default_tap_loader
|
||||||
|
|
||||||
|
opoo error if warn
|
||||||
|
default_tap_loader
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -557,10 +552,8 @@ module Cask
|
|||||||
FromURILoader,
|
FromURILoader,
|
||||||
FromAPILoader,
|
FromAPILoader,
|
||||||
FromTapLoader,
|
FromTapLoader,
|
||||||
|
FromNameLoader,
|
||||||
FromPathLoader,
|
FromPathLoader,
|
||||||
FromDefaultTapPathLoader,
|
|
||||||
FromAmbiguousTapPathLoader,
|
|
||||||
FromDefaultTapLoader,
|
|
||||||
FromInstalledPathLoader,
|
FromInstalledPathLoader,
|
||||||
NullLoader,
|
NullLoader,
|
||||||
].each do |loader_class|
|
].each do |loader_class|
|
||||||
|
@ -131,10 +131,14 @@ module Cask
|
|||||||
#
|
#
|
||||||
# @api private
|
# @api private
|
||||||
class TapCaskAmbiguityError < CaskError
|
class TapCaskAmbiguityError < CaskError
|
||||||
def initialize(ref, loaders)
|
def initialize(token, taps)
|
||||||
|
casks = taps.map { |tap| "#{tap}/#{token}" }
|
||||||
|
cask_list = casks.sort.map { |f| "\n * #{f}" }.join
|
||||||
|
|
||||||
super <<~EOS
|
super <<~EOS
|
||||||
Cask #{ref} exists in multiple taps:
|
Cask #{token} exists in multiple taps:#{cask_list}
|
||||||
#{loaders.map { |loader| " #{loader.tap}/#{loader.token}" }.join("\n")}
|
|
||||||
|
Please use the fully-qualified name (e.g. #{casks.first}) to refer to a specific Cask.
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user