| 
									
										
										
										
											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 | 
					
						
							| 
									
										
										
										
											2014-02-27 12:56:59 -06:00
										 |  |  |     f.requirements.select(&:default_formula?).each do |req| | 
					
						
							|  |  |  |       puts "|  "*(level-1) + "|- :#{req.to_dependency.name}" | 
					
						
							| 
									
										
										
										
											2013-10-29 17:27:21 -04:00
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											2013-06-09 12:59:42 -05:00
										 |  |  |     f.deps.default.each do |dep| | 
					
						
							| 
									
										
										
										
											2014-02-27 12:56:59 -06:00
										 |  |  |       puts "|  "*(level-1) + "|- #{dep.name}" | 
					
						
							|  |  |  |       recursive_deps_tree(Formulary.factory(dep.name), level+1) | 
					
						
							| 
									
										
										
										
											2013-06-09 12:59:42 -05:00
										 |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2010-09-11 20:22:54 +01:00
										 |  |  | end |