2010-09-25 12:49:09 +01:00
|
|
|
require 'formula'
|
2013-06-22 12:54:46 -05:00
|
|
|
require 'ostruct'
|
2010-09-25 12:49:09 +01:00
|
|
|
|
2010-09-11 20:22:54 +01:00
|
|
|
module Homebrew extend self
|
|
|
|
def deps
|
2013-06-22 12:54:46 -05:00
|
|
|
mode = OpenStruct.new(
|
|
|
|
:installed? => ARGV.include?('--installed'),
|
|
|
|
:tree? => ARGV.include?('--tree'),
|
|
|
|
:all? => ARGV.include?('--all'),
|
|
|
|
:topo_order? => ARGV.include?('-n')
|
|
|
|
)
|
|
|
|
|
2013-06-22 12:54:46 -05:00
|
|
|
if mode.installed? && mode.tree?
|
|
|
|
puts_deps_tree Formula.installed
|
|
|
|
elsif mode.installed?
|
2013-06-22 12:54:45 -05:00
|
|
|
puts_deps Formula.installed
|
2013-06-22 12:54:46 -05:00
|
|
|
elsif mode.all?
|
2013-06-22 12:54:45 -05:00
|
|
|
puts_deps Formula
|
2013-06-22 12:54:46 -05:00
|
|
|
elsif mode.tree?
|
2012-02-04 00:01:29 -06:00
|
|
|
raise FormulaUnspecifiedError if ARGV.named.empty?
|
2013-06-22 12:54:45 -05:00
|
|
|
puts_deps_tree ARGV.formulae
|
2010-09-11 20:22:54 +01:00
|
|
|
else
|
2012-02-04 00:01:29 -06:00
|
|
|
raise FormulaUnspecifiedError if ARGV.named.empty?
|
2013-11-02 22:18:46 -05:00
|
|
|
all_deps = deps_for_formulae(ARGV.formulae, !ARGV.one?)
|
2014-02-27 12:56:42 -06:00
|
|
|
all_deps = all_deps.sort_by(&:name) unless mode.topo_order?
|
2011-04-13 13:10:25 -07:00
|
|
|
puts all_deps
|
2010-09-11 20:22:54 +01:00
|
|
|
end
|
|
|
|
end
|
2013-06-09 12:59:42 -05:00
|
|
|
|
2013-10-29 17:27:21 -04:00
|
|
|
def deps_for_formula(f, recursive=false)
|
|
|
|
if recursive
|
|
|
|
deps = f.recursive_dependencies
|
|
|
|
reqs = f.recursive_requirements
|
|
|
|
else
|
|
|
|
deps = f.deps.default
|
|
|
|
reqs = f.requirements
|
|
|
|
end
|
2014-02-27 12:56:42 -06:00
|
|
|
|
|
|
|
deps + reqs.select(&:default_formula?).map(&:to_dependency)
|
2013-10-29 17:27:21 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
def deps_for_formulae(formulae, recursive=false)
|
|
|
|
formulae.map {|f| deps_for_formula(f, recursive) }.inject(&:&)
|
2013-06-22 12:54:45 -05:00
|
|
|
end
|
|
|
|
|
2013-06-22 12:54:45 -05:00
|
|
|
def puts_deps(formulae)
|
2014-02-27 12:56:42 -06:00
|
|
|
formulae.each { |f| puts "#{f.name}: #{deps_for_formula(f).sort_by(&:name) * " "}" }
|
2013-06-22 12:54:45 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
def puts_deps_tree(formulae)
|
|
|
|
formulae.each do |f|
|
|
|
|
puts f.name
|
|
|
|
recursive_deps_tree(f, 1)
|
|
|
|
puts
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2013-06-09 12:59:42 -05:00
|
|
|
def recursive_deps_tree f, level
|
2013-10-29 17:27:21 -04:00
|
|
|
f.requirements.each do |requirement|
|
|
|
|
next unless requirement.default_formula?
|
|
|
|
puts "| "*(level-1)+"|- :"+requirement.class.default_formula.to_s
|
|
|
|
end
|
2013-06-09 12:59:42 -05:00
|
|
|
f.deps.default.each do |dep|
|
|
|
|
puts "| "*(level-1)+"|- "+dep.to_s
|
2013-07-10 06:59:45 -07:00
|
|
|
recursive_deps_tree(Formula.factory(dep.to_s), level+1)
|
2013-06-09 12:59:42 -05:00
|
|
|
end
|
|
|
|
end
|
2010-09-11 20:22:54 +01:00
|
|
|
end
|