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.
This commit is contained in:
Max Howell 2010-09-25 12:49:09 +01:00 committed by Adam Vandenberg
parent 521f1ec959
commit e96744eb6f
2 changed files with 20 additions and 7 deletions

View File

@ -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

View File

@ -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|