Try to find install receipt when keg is unlinked

This roughly matches the logic we use to determine the active keg in
ARGV.kegs.
This commit is contained in:
Jack Nagel 2014-03-22 11:34:26 -05:00
parent a8eb84812a
commit b4e5401e66

View File

@ -51,9 +51,21 @@ class Tab < OpenStruct
end end
def self.for_formula f def self.for_formula f
path = [f.opt_prefix, f.linked_keg].map{ |pn| pn.join(FILENAME) }.find{ |pn| pn.exist? } paths = [f.opt_prefix, f.linked_keg]
# Legacy kegs may lack a receipt. If it doesn't exist, fake one
if path.nil? then self.dummy_tab(f) else self.from_file(path) end if f.rack.directory? && (dirs = f.rack.subdirs).length == 1
paths << dirs.first
end
paths << f.prefix
path = paths.map { |pn| pn.join(FILENAME) }.find(&:file?)
if path
from_file(path)
else
dummy_tab(f)
end
end end
def self.dummy_tab f=nil def self.dummy_tab f=nil