diff --git a/Library/Homebrew/cask/cask_loader.rb b/Library/Homebrew/cask/cask_loader.rb index adfced0647..2650283762 100644 --- a/Library/Homebrew/cask/cask_loader.rb +++ b/Library/Homebrew/cask/cask_loader.rb @@ -114,9 +114,8 @@ module Cask path = Pathname(path).expand_path @token = path.basename(path.extname).to_s - @path = path - @tap = Homebrew::API.tap_from_source_download(path) + @tap = Tap.from_path(path) || Homebrew::API.tap_from_source_download(path) end def load(config:) @@ -195,27 +194,8 @@ module Cask end end - # Loads a cask from a tap path. - class FromTapPathLoader < 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) - return unless (loader = super) - - loader unless Tap.from_path(ref).nil? - end - - sig { params(path: T.any(Pathname, String)).void } - def initialize(path) - super(path) - @tap = Tap.from_path(path) - end - end - # Loads a cask from a specific tap. - class FromTapLoader < FromTapPathLoader + class FromTapLoader < FromPathLoader sig { params(ref: T.any(String, Pathname, Cask, URI::Generic), warn: T::Boolean) .returns(T.nilable(T.attached_class)) @@ -265,7 +245,7 @@ module Cask end # Loads a cask from the default tap path. - class FromDefaultTapPathLoader < FromTapPathLoader + class FromDefaultTapPathLoader < FromPathLoader sig { params(ref: T.any(String, Pathname, Cask, URI::Generic), warn: T::Boolean) .returns(T.nilable(T.attached_class)) @@ -484,13 +464,13 @@ module Cask # Loader which tries loading casks from tap paths, failing # if the same token exists in multiple taps. - class FromAmbiguousTapPathLoader < FromTapPathLoader + class FromAmbiguousTapPathLoader < FromPathLoader def self.try_new(ref, warn: false) case (possible_tap_casks = CaskLoader.tap_paths(ref)).count when 1 new(possible_tap_casks.first) when 2..Float::INFINITY - loaders = possible_tap_casks.map(&FromTapPathLoader.method(:new)) + loaders = possible_tap_casks.map(&FromPathLoader.method(:new)) raise TapCaskAmbiguityError.new(ref, loaders) end end @@ -572,7 +552,6 @@ module Cask FromURILoader, FromAPILoader, FromTapLoader, - FromTapPathLoader, FromPathLoader, FromDefaultTapPathLoader, FromAmbiguousTapPathLoader, diff --git a/Library/Homebrew/cask/caskroom.rb b/Library/Homebrew/cask/caskroom.rb index bc3f505df3..272685dc59 100644 --- a/Library/Homebrew/cask/caskroom.rb +++ b/Library/Homebrew/cask/caskroom.rb @@ -56,7 +56,7 @@ module Cask CaskLoader.load(token, config: config) rescue TapCaskAmbiguityError tap_path = CaskLoader.tap_paths(token).first - CaskLoader::FromTapPathLoader.new(tap_path).load(config: config) + CaskLoader::FromPathLoader.new(tap_path).load(config: config) rescue # Don't blow up because of a single unavailable cask. nil diff --git a/Library/Homebrew/test/cask/cask_loader_spec.rb b/Library/Homebrew/test/cask/cask_loader_spec.rb index b9c83cbb45..184343dd03 100644 --- a/Library/Homebrew/test/cask/cask_loader_spec.rb +++ b/Library/Homebrew/test/cask/cask_loader_spec.rb @@ -37,13 +37,13 @@ describe Cask::CaskLoader, :cask do it "warns when using the short token" do expect do - expect(described_class.for("version-newest")).to be_a Cask::CaskLoader::FromTapPathLoader + expect(described_class.for("version-newest")).to be_a Cask::CaskLoader::FromPathLoader end.to output(/version-newest was renamed to version-latest/).to_stderr end it "warns when using the full token" do expect do - expect(described_class.for("homebrew/cask/version-newest")).to be_a Cask::CaskLoader::FromTapPathLoader + expect(described_class.for("homebrew/cask/version-newest")).to be_a Cask::CaskLoader::FromPathLoader end.to output(/version-newest was renamed to version-latest/).to_stderr end end