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 path = Pathname(path).expand_path
@token = path.basename(path.extname).to_s @token = path.basename(path.extname).to_s
@path = path @path = path
@tap = Homebrew::API.tap_from_source_download(path) @tap = Tap.from_path(path) || Homebrew::API.tap_from_source_download(path)
end end
def load(config:) def load(config:)
@ -195,27 +194,8 @@ module Cask
end end
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. # Loads a cask from a specific tap.
class FromTapLoader < FromTapPathLoader class FromTapLoader < FromPathLoader
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))
@ -265,7 +245,7 @@ module Cask
end end
# Loads a cask from the default tap path. # Loads a cask from the default tap path.
class FromDefaultTapPathLoader < FromTapPathLoader class FromDefaultTapPathLoader < FromPathLoader
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))
@ -484,13 +464,13 @@ 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 < FromTapPathLoader class FromAmbiguousTapPathLoader < FromPathLoader
def self.try_new(ref, warn: false) def self.try_new(ref, warn: false)
case (possible_tap_casks = CaskLoader.tap_paths(ref)).count case (possible_tap_casks = CaskLoader.tap_paths(ref)).count
when 1 when 1
new(possible_tap_casks.first) new(possible_tap_casks.first)
when 2..Float::INFINITY 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) raise TapCaskAmbiguityError.new(ref, loaders)
end end
end end
@ -572,7 +552,6 @@ module Cask
FromURILoader, FromURILoader,
FromAPILoader, FromAPILoader,
FromTapLoader, FromTapLoader,
FromTapPathLoader,
FromPathLoader, FromPathLoader,
FromDefaultTapPathLoader, FromDefaultTapPathLoader,
FromAmbiguousTapPathLoader, FromAmbiguousTapPathLoader,

View File

@ -56,7 +56,7 @@ module Cask
CaskLoader.load(token, config: config) CaskLoader.load(token, config: config)
rescue TapCaskAmbiguityError rescue TapCaskAmbiguityError
tap_path = CaskLoader.tap_paths(token).first tap_path = CaskLoader.tap_paths(token).first
CaskLoader::FromTapPathLoader.new(tap_path).load(config: config) CaskLoader::FromPathLoader.new(tap_path).load(config: config)
rescue rescue
# Don't blow up because of a single unavailable cask. # Don't blow up because of a single unavailable cask.
nil nil

View File

@ -37,13 +37,13 @@ describe Cask::CaskLoader, :cask do
it "warns when using the short token" do it "warns when using the short token" do
expect 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.to output(/version-newest was renamed to version-latest/).to_stderr
end end
it "warns when using the full token" do it "warns when using the full token" do
expect 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.to output(/version-newest was renamed to version-latest/).to_stderr
end end
end end