diff options
| author | Max Howell | 2010-09-25 12:49:09 +0100 |
|---|---|---|
| committer | Adam Vandenberg | 2011-03-12 11:55:04 -0800 |
| commit | e96744eb6f94c19eb0910c61984e7121e063f970 (patch) | |
| tree | 97f73411e23785d9ddde83f50db5f8329634c8c5 /Library | |
| parent | 521f1ec95904dcf4064d23831ca2e484b930bc26 (diff) | |
| download | brew-e96744eb6f94c19eb0910c61984e7121e063f970.tar.bz2 | |
`brew deps foo bar` now gives the dependency intersection
Rationale: this is more useful than the union, and you can still easily get the union by running the command twice and concatenating the result.
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/cmd/deps.rb | 24 | ||||
| -rw-r--r-- | Library/Homebrew/extend/ARGV.rb | 3 |
2 files changed, 20 insertions, 7 deletions
diff --git a/Library/Homebrew/cmd/deps.rb b/Library/Homebrew/cmd/deps.rb index 2e9a723f4..f5dd675c8 100644 --- a/Library/Homebrew/cmd/deps.rb +++ b/Library/Homebrew/cmd/deps.rb @@ -1,14 +1,24 @@ +require 'formula' + module Homebrew extend self def deps - puts if ARGV.include?('--all') - require 'formula' - Formula.all.each do |f| - "#{f.name}:#{f.deps.join(' ')}" + if ARGV.include? '--all' + Formula.each do |f| + # TODO add a space after the colon?? + puts "#{f.name}:#{f.deps*' '}" end - elsif ARGV.include?("-1") or ARGV.include?("--1") - *ARGV.formulae.map{ |f| f.deps or [] }.flatten.uniq.sort else - *ARGV.formulae.map{ |f| f.recursive_deps.map{ |f| f.name } }.flatten.uniq.sort + func = if ARGV.one? then :deps else :recursive_deps end + puts ARGV.formulae.map(&func).intersection.sort end end end + +class Array + def intersection + a = [] + each{ |b| a |= b } + each{ |c| a &= c } + a + end +end diff --git a/Library/Homebrew/extend/ARGV.rb b/Library/Homebrew/extend/ARGV.rb index c7195bbcd..29d2c1d19 100644 --- a/Library/Homebrew/extend/ARGV.rb +++ b/Library/Homebrew/extend/ARGV.rb @@ -54,6 +54,9 @@ module HomebrewArgvExtension def build_head? flag? '--HEAD' end + def one? + flag? "--1" + end def flag? flag options_only.each do |arg| |
