args: Add field for kegs and unknowns
This commit is contained in:
parent
176c85d42c
commit
cbfea6c125
@ -39,6 +39,7 @@ module Homebrew
|
|||||||
@formulae_paths = nil
|
@formulae_paths = nil
|
||||||
@casks = nil
|
@casks = nil
|
||||||
@kegs = nil
|
@kegs = nil
|
||||||
|
@kegs_and_unknowns = nil
|
||||||
|
|
||||||
self[:named_args] = named_args
|
self[:named_args] = named_args
|
||||||
self[:named_args].freeze
|
self[:named_args].freeze
|
||||||
@ -108,55 +109,73 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
|
|
||||||
def kegs
|
def kegs
|
||||||
|
@kegs ||= downcased_unique_named.map do |name|
|
||||||
|
resolve_keg name
|
||||||
|
rescue NoSuchKegError => e
|
||||||
|
if (reason = Homebrew::MissingFormula.suggest_command(name, "uninstall"))
|
||||||
|
$stderr.puts reason
|
||||||
|
end
|
||||||
|
raise e
|
||||||
|
end.freeze
|
||||||
|
end
|
||||||
|
|
||||||
|
def kegs_and_unknowns
|
||||||
|
return @kegs_and_unknowns if @kegs_and_unknowns
|
||||||
|
|
||||||
|
kegs = []
|
||||||
|
unknowns = []
|
||||||
|
downcased_unique_named.each do |name|
|
||||||
|
kegs << resolve_keg(name)
|
||||||
|
rescue NoSuchKegError
|
||||||
|
unknowns << name
|
||||||
|
end
|
||||||
|
|
||||||
|
@kegs_and_unknowns = [kegs, unknowns]
|
||||||
|
end
|
||||||
|
|
||||||
|
def resolve_keg(name)
|
||||||
require "keg"
|
require "keg"
|
||||||
require "formula"
|
require "formula"
|
||||||
require "missing_formula"
|
require "missing_formula"
|
||||||
|
|
||||||
@kegs ||= downcased_unique_named.map do |name|
|
raise UsageError if name.empty?
|
||||||
raise UsageError if name.empty?
|
|
||||||
|
|
||||||
rack = Formulary.to_rack(name.downcase)
|
rack = Formulary.to_rack(name.downcase)
|
||||||
|
|
||||||
dirs = rack.directory? ? rack.subdirs : []
|
dirs = rack.directory? ? rack.subdirs : []
|
||||||
|
|
||||||
if dirs.empty?
|
raise NoSuchKegError, rack.basename if dirs.empty?
|
||||||
if (reason = Homebrew::MissingFormula.suggest_command(name, "uninstall"))
|
|
||||||
$stderr.puts reason
|
|
||||||
end
|
|
||||||
raise NoSuchKegError, rack.basename
|
|
||||||
end
|
|
||||||
|
|
||||||
linked_keg_ref = HOMEBREW_LINKED_KEGS/rack.basename
|
linked_keg_ref = HOMEBREW_LINKED_KEGS/rack.basename
|
||||||
opt_prefix = HOMEBREW_PREFIX/"opt/#{rack.basename}"
|
opt_prefix = HOMEBREW_PREFIX/"opt/#{rack.basename}"
|
||||||
|
|
||||||
begin
|
begin
|
||||||
if opt_prefix.symlink? && opt_prefix.directory?
|
if opt_prefix.symlink? && opt_prefix.directory?
|
||||||
Keg.new(opt_prefix.resolved_path)
|
Keg.new(opt_prefix.resolved_path)
|
||||||
elsif linked_keg_ref.symlink? && linked_keg_ref.directory?
|
elsif linked_keg_ref.symlink? && linked_keg_ref.directory?
|
||||||
Keg.new(linked_keg_ref.resolved_path)
|
Keg.new(linked_keg_ref.resolved_path)
|
||||||
elsif dirs.length == 1
|
elsif dirs.length == 1
|
||||||
Keg.new(dirs.first)
|
Keg.new(dirs.first)
|
||||||
|
else
|
||||||
|
f = if name.include?("/") || File.exist?(name)
|
||||||
|
Formulary.factory(name)
|
||||||
else
|
else
|
||||||
f = if name.include?("/") || File.exist?(name)
|
Formulary.from_rack(rack)
|
||||||
Formulary.factory(name)
|
|
||||||
else
|
|
||||||
Formulary.from_rack(rack)
|
|
||||||
end
|
|
||||||
|
|
||||||
unless (prefix = f.installed_prefix).directory?
|
|
||||||
raise MultipleVersionsInstalledError, rack.basename
|
|
||||||
end
|
|
||||||
|
|
||||||
Keg.new(prefix)
|
|
||||||
end
|
end
|
||||||
rescue FormulaUnavailableError
|
|
||||||
raise <<~EOS
|
unless (prefix = f.installed_prefix).directory?
|
||||||
Multiple kegs installed to #{rack}
|
raise MultipleVersionsInstalledError, rack.basename
|
||||||
However we don't know which one you refer to.
|
end
|
||||||
Please delete (with rm -rf!) all but one and then try again.
|
|
||||||
EOS
|
Keg.new(prefix)
|
||||||
end
|
end
|
||||||
end.freeze
|
rescue FormulaUnavailableError
|
||||||
|
raise <<~EOS
|
||||||
|
Multiple kegs installed to #{rack}
|
||||||
|
However we don't know which one you refer to.
|
||||||
|
Please delete (with rm -rf!) all but one and then try again.
|
||||||
|
EOS
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def build_stable?
|
def build_stable?
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user