aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Vandenberg2009-11-16 23:12:24 -0800
committerAdam Vandenberg2009-11-19 14:03:07 -0800
commit7366a412681384df9716499f737e90d8bad03d84 (patch)
treee50bc985770e7fb3b62d6dade33140356158117b
parent56f82a33b1412a79e8519f3debe9fdb8b581776d (diff)
downloadbrew-7366a412681384df9716499f737e90d8bad03d84.tar.bz2
New command 'brew deps [formula]'
Where brew info will show the next-level-down dependencies, brew deps will show all of the formulae that a given formula depends on.
-rw-r--r--Library/Homebrew/formula.rb17
-rwxr-xr-xbin/brew29
2 files changed, 45 insertions, 1 deletions
diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb
index 029aef77c..93a31481d 100644
--- a/Library/Homebrew/formula.rb
+++ b/Library/Homebrew/formula.rb
@@ -38,10 +38,25 @@ class Formulary
# Returns all formula names as strings, with or without aliases
def self.names with_aliases=false
everything = (HOMEBREW_REPOSITORY+'Library/Formula').children.map{|f| f.basename('.rb').to_s }
- everything.push *Formulary.get_aliases.keys if with_aliases
+ if with_aliases
+ everything.push *Formulary.get_aliases.keys
+ end
everything.sort
end
+ def self.read name
+ Formulary.names.each do |f|
+ next if f != name
+
+ require Formula.path(name)
+ klass_name = Formula.class_s(name)
+ klass = eval(klass_name)
+ return klass
+ end
+
+ return nil
+ end
+
# Loads all formula classes.
def self.read_all
Formulary.names.each do |name|
diff --git a/bin/brew b/bin/brew
index adc5e51c1..1151d88cc 100755
--- a/bin/brew
+++ b/bin/brew
@@ -246,6 +246,35 @@ begin
puts "#{name} is a dependency for #{our_deps.join(', ')}."
end
end
+
+ when 'deps'
+ require 'formula'
+
+ ARGV.formulae.each do |f|
+ name = f.name
+
+ our_deps = []
+ checked = {}
+ to_check = [name]
+
+ while ! to_check.empty?
+ item = to_check.pop
+ checked[item] = true
+
+ formula = Formulary.read item
+ next if formula == nil || formula.deps == nil || formula.deps.empty?
+
+ our_deps.push(*formula.deps)
+ to_check.push(*formula.deps.select{|g| !checked[g]})
+ end
+
+ if our_deps.empty?
+ puts "#{name} has no dependencies."
+ else
+ our_deps.sort!
+ puts "#{name} depends on #{our_deps.join(", ")}"
+ end
+ end
when 'pull', 'push', 'checkout', 'branch'
onoe "Unknown command: #{arg} (did you mean 'git #{arg}'?)"