named_args: better handle keg-like casks.
Need to ensure we're using the installed caskfile when it's requested and readable. Follow-up from https://github.com/Homebrew/brew/pull/13289 addressing https://github.com/Homebrew/brew/pull/13289#discussion_r884853652
This commit is contained in:
parent
2d80148683
commit
fdefffc0a5
@ -134,6 +134,8 @@ module Homebrew
|
|||||||
contents = Homebrew::API::CaskSource.fetch(name)
|
contents = Homebrew::API::CaskSource.fetch(name)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
want_keg_like_cask = [:latest_kegs, :default_kegs, :kegs].include?(method)
|
||||||
|
|
||||||
begin
|
begin
|
||||||
config = Cask::Config.from_args(@parent) if @cask_options
|
config = Cask::Config.from_args(@parent) if @cask_options
|
||||||
cask = Cask::CaskLoader.load(contents || name, config: config)
|
cask = Cask::CaskLoader.load(contents || name, config: config)
|
||||||
@ -146,11 +148,17 @@ module Homebrew
|
|||||||
opoo "Treating #{name} as a cask."
|
opoo "Treating #{name} as a cask."
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# If we're trying to get a keg-like Cask, do our best to use the same cask
|
||||||
|
# file that was used for installation, if possible.
|
||||||
|
if want_keg_like_cask && (installed_caskfile = cask.installed_caskfile) && installed_caskfile.exist?
|
||||||
|
cask = Cask::CaskLoader.load(installed_caskfile)
|
||||||
|
end
|
||||||
|
|
||||||
return cask
|
return cask
|
||||||
rescue Cask::CaskUnreadableError => e
|
rescue Cask::CaskUnreadableError => e
|
||||||
# If we're trying to get a keg-like Cask, do our best to handle it
|
# If we're trying to get a keg-like Cask, do our best to handle it
|
||||||
# not being readable and return something that can be used.
|
# not being readable and return something that can be used.
|
||||||
if [:latest_kegs, :default_kegs, :kegs].include?(method)
|
if want_keg_like_cask
|
||||||
cask_version = Cask::Cask.new(name, config: config).versions.first
|
cask_version = Cask::Cask.new(name, config: config).versions.first
|
||||||
cask = Cask::Cask.new(name, config: config) do
|
cask = Cask::Cask.new(name, config: config) do
|
||||||
version cask_version if cask_version
|
version cask_version if cask_version
|
||||||
|
Loading…
x
Reference in New Issue
Block a user