Merge FromTapPathLoader into FromPathLoader.

This commit is contained in:
Markus Reiter 2024-02-08 14:53:55 +01:00
parent dc21095731
commit 889854b0b3
No known key found for this signature in database
GPG Key ID: 245293B51702655B
3 changed files with 8 additions and 29 deletions

View File

@ -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,

View File

@ -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

View File

@ -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