diff options
| author | Xu Cheng | 2015-05-16 11:26:26 +0800 |
|---|---|---|
| committer | Xu Cheng | 2015-05-27 13:53:40 +0800 |
| commit | 647c7626f0075d5e5cc8a7f6e2fac575232f0cd6 (patch) | |
| tree | 08e162d705071f26e6bf4474cfc10929464343fa /Library | |
| parent | e91d152af8d752691e3215190dccc66c60a0e506 (diff) | |
| download | brew-647c7626f0075d5e5cc8a7f6e2fac575232f0cd6.tar.bz2 | |
Formulary: add from_rack
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/formulary.rb | 16 |
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 |
