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