add Formulary#from_keg

This commit is contained in:
Xu Cheng 2016-07-15 17:45:21 +08:00
parent 7452dcf508
commit c021f37525
No known key found for this signature in database
GPG Key ID: C2A3860FA0B459CE
2 changed files with 13 additions and 7 deletions

View File

@ -219,10 +219,18 @@ class Formulary
# It will auto resolve formula's spec when requested spec is nil # It will auto resolve formula's spec when requested spec is nil
def self.from_rack(rack, spec = nil) def self.from_rack(rack, spec = nil)
kegs = rack.directory? ? rack.subdirs.map { |d| Keg.new(d) } : [] kegs = rack.directory? ? rack.subdirs.map { |d| Keg.new(d) } : []
keg = kegs.detect(&:linked?) || kegs.detect(&:optlinked?) || kegs.max_by(&:version) keg = kegs.detect(&:linked?) || kegs.detect(&:optlinked?) || kegs.max_by(&:version)
return factory(rack.basename.to_s, spec || :stable) unless keg
if keg
from_keg(keg, spec)
else
factory(rack.basename.to_s, spec || :stable)
end
end
# Return a Formula instance for the given keg.
# It will auto resolve formula's spec when requested spec is nil
def self.from_keg(keg, spec = nil)
tab = Tab.for_keg(keg) tab = Tab.for_keg(keg)
tap = tab.tap tap = tab.tap
spec ||= tab.spec spec ||= tab.spec
@ -231,10 +239,10 @@ class Formulary
factory(rack.basename.to_s, spec) factory(rack.basename.to_s, spec)
else else
begin begin
factory("#{tap}/#{rack.basename}", spec) factory("#{tap}/#{keg.rack.basename}", spec)
rescue FormulaUnavailableError rescue FormulaUnavailableError
# formula may be migrated to different tap. Try to search in core and all taps. # formula may be migrated to different tap. Try to search in core and all taps.
factory(rack.basename.to_s, spec) factory(keg.rack.basename.to_s, spec)
end end
end end
f.build = tab f.build = tab

View File

@ -129,9 +129,7 @@ class LinkageChecker
end end
def resolve_formula(keg) def resolve_formula(keg)
f = Formulary.from_rack(keg.rack) Formulary.from_keg(keg)
f.build = Tab.for_keg(keg)
f
rescue FormulaUnavailableError rescue FormulaUnavailableError
opoo "Formula unavailable: #{keg.name}" opoo "Formula unavailable: #{keg.name}"
end end