From e96744eb6f94c19eb0910c61984e7121e063f970 Mon Sep 17 00:00:00 2001 From: Max Howell Date: Sat, 25 Sep 2010 12:49:09 +0100 Subject: [PATCH] `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. --- Library/Homebrew/cmd/deps.rb | 24 +++++++++++++++++------- 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 2e9a723f4e..f5dd675c80 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 c7195bbcd1..29d2c1d19f 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|