aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Vandenberg2009-11-16 15:35:58 -0800
committerAdam Vandenberg2009-11-19 14:03:07 -0800
commitaf29299f37417f436f6fb0a612578abb3edfd21b (patch)
tree56ce903d576d6ea0b141d52bcfe428383c7bd09c
parented4992f467e0c3b8b84959d279e2be9d8be25ab1 (diff)
downloadbrew-af29299f37417f436f6fb0a612578abb3edfd21b.tar.bz2
Add brew command 'uses'
'uses' shows the formulas that depend on a formula given on the command-line.
-rw-r--r--Library/Homebrew/formula.rb16
-rwxr-xr-xbin/brew18
2 files changed, 34 insertions, 0 deletions
diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb
index 247d67824..0cc084705 100644
--- a/Library/Homebrew/formula.rb
+++ b/Library/Homebrew/formula.rb
@@ -201,6 +201,22 @@ class Formula
name.capitalize.gsub(/[-_.\s]([a-zA-Z0-9])/) { $1.upcase } \
.gsub('+', 'x')
end
+
+ def self.get_used_by
+ used_by = {}
+ Formulary.read_all do |name, klass|
+ deps = klass.deps
+ next if deps == nil
+
+ deps.each do |dep|
+ _deps = used_by[dep] || []
+ _deps << name unless _deps.include? name
+ used_by[dep] = _deps
+ end
+ end
+
+ return used_by
+ end
def self.factory name
return name if name.kind_of? Formula
diff --git a/bin/brew b/bin/brew
index 03093a524..7b42a8f19 100755
--- a/bin/brew
+++ b/bin/brew
@@ -226,6 +226,24 @@ begin
when 'log'
Dir.chdir HOMEBREW_REPOSITORY
exec "git", "log", ARGV.formulae.first.path, *ARGV.options
+
+ when 'uses'
+ # For each formula given, show which other formulas depend on it.
+ # We only go one level up, direct dependencies.
+ require 'formula'
+ require 'utils'
+
+ deps = Formula.get_used_by
+
+ ARGV.formulae.each do |f|
+ name = f.name
+ our_deps = deps[name]
+ if our_deps == nil
+ puts "#{name} is not a dependency."
+ else
+ puts "#{name} is a dependency for #{our_deps.join(', ')}."
+ end
+ end
when 'pull', 'push', 'checkout', 'branch'
onoe "Unknown command: #{arg} (did you mean 'git #{arg}'?)"