cask_loader: do not auto-tap in FromTapLoader

This commit is contained in:
nandahkrishna 2021-03-11 21:09:42 +05:30
parent 5240afbbb5
commit 585ec90878
No known key found for this signature in database
GPG Key ID: 067E5FCD58ADF3AA
4 changed files with 47 additions and 1 deletions

View File

@ -157,7 +157,7 @@ module Cask
end
def load(config:)
tap.install unless tap.installed?
raise TapCaskUnavailableError.new(tap, token) unless tap.installed?
super
end

View File

@ -103,6 +103,27 @@ module Cask
end
end
# Error when a cask in a specific tap is not available.
#
# @api private
class TapCaskUnavailableError < CaskUnavailableError
extend T::Sig
attr_reader :tap
def initialize(tap, token)
super("#{tap}/#{token}")
@tap = tap
end
sig { returns(String) }
def to_s
s = super
s += "\nPlease tap it and then try again: brew tap #{tap}" unless tap.installed?
s
end
end
# Error when a cask already exists.
#
# @api private

View File

@ -132,6 +132,12 @@ module Homebrew
raise unreadable_error if unreadable_error.present?
user, repo, short_name = name.downcase.split("/", 3)
if repo.present? && short_name.present?
tap = Tap.fetch(user, repo)
raise TapFormulaOrCaskUnavailableError.new(tap, short_name)
end
raise FormulaOrCaskUnavailableError, name
end
private :load_formula_or_cask

View File

@ -97,6 +97,25 @@ class FormulaOrCaskUnavailableError < RuntimeError
end
end
# Raised when a formula or cask in a specific tap is not available.
class TapFormulaOrCaskUnavailableError < FormulaOrCaskUnavailableError
extend T::Sig
attr_reader :tap
def initialize(tap, name)
super "#{tap}/#{name}"
@tap = tap
end
sig { returns(String) }
def to_s
s = super
s += "\nPlease tap it and then try again: brew tap #{tap}" unless tap.installed?
s
end
end
# Raised when a formula is not available.
class FormulaUnavailableError < FormulaOrCaskUnavailableError
extend T::Sig