diff options
| author | Adam Vandenberg | 2009-11-16 15:35:58 -0800 |
|---|---|---|
| committer | Adam Vandenberg | 2009-11-19 14:03:07 -0800 |
| commit | af29299f37417f436f6fb0a612578abb3edfd21b (patch) | |
| tree | 56ce903d576d6ea0b141d52bcfe428383c7bd09c | |
| parent | ed4992f467e0c3b8b84959d279e2be9d8be25ab1 (diff) | |
| download | brew-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.rb | 16 | ||||
| -rwxr-xr-x | bin/brew | 18 |
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 @@ -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}'?)" |
