From 647c7626f0075d5e5cc8a7f6e2fac575232f0cd6 Mon Sep 17 00:00:00 2001 From: Xu Cheng <xucheng@me.com> Date: Sat, 16 May 2015 11:26:26 +0800 Subject: [PATCH] Formulary: add from_rack --- Library/Homebrew/formulary.rb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Library/Homebrew/formulary.rb b/Library/Homebrew/formulary.rb index b8413f7a01..d171e62b5d 100644 --- a/Library/Homebrew/formulary.rb +++ b/Library/Homebrew/formulary.rb @@ -200,6 +200,22 @@ class Formulary loader_for(ref).get_formula(spec) end + # Return a Formula instance for the given rack. + def self.from_rack(rack, spec=:stable) + kegs = rack.directory? ? rack.subdirs.map { |d| Keg.new(d) } : [] + + keg = kegs.detect(&:linked?) || kegs.detect(&:optlinked?) || kegs.max_by(&:version) + return factory(rack.basename.to_s, spec) unless keg + + tap = Tab.for_keg(keg).tap + + if tap.nil? || tap == "Homebrew/homebrew" + factory(rack.basename.to_s, spec) + else + factory("#{tap.sub("homebrew-", "")}/#{rack.basename}", spec) + end + end + def self.canonical_name(ref) loader_for(ref).name rescue TapFormulaAmbiguityError -- GitLab