aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew
diff options
context:
space:
mode:
authorXu Cheng2015-05-16 11:26:26 +0800
committerXu Cheng2015-05-27 13:53:40 +0800
commit647c7626f0075d5e5cc8a7f6e2fac575232f0cd6 (patch)
tree08e162d705071f26e6bf4474cfc10929464343fa /Library/Homebrew
parente91d152af8d752691e3215190dccc66c60a0e506 (diff)
downloadbrew-647c7626f0075d5e5cc8a7f6e2fac575232f0cd6.tar.bz2
Formulary: add from_rack
Diffstat (limited to 'Library/Homebrew')
-rw-r--r--Library/Homebrew/formulary.rb16
1 files changed, 16 insertions, 0 deletions
diff --git a/Library/Homebrew/formulary.rb b/Library/Homebrew/formulary.rb
index b8413f7a0..d171e62b5 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