add Formulary#from_keg
This commit is contained in:
parent
7452dcf508
commit
c021f37525
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user