 872f46dc1e
			
		
	
	
		872f46dc1e
		
	
	
	
	
		
			
			`brew uses foo bar` is supposed to return the intersection of formulae that use foo and bar. However, this was broken by changes made to support requirements that can coerce to regular dependencies.
		
			
				
	
	
		
			30 lines
		
	
	
		
			903 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			903 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| require 'formula'
 | |
| 
 | |
| # `brew uses foo bar` returns formulae that use both foo and bar
 | |
| # If you want the union, run the command twice and concatenate the results.
 | |
| # The intersection is harder to achieve with shell tools.
 | |
| 
 | |
| module Homebrew extend self
 | |
|   def uses
 | |
|     raise FormulaUnspecifiedError if ARGV.named.empty?
 | |
| 
 | |
|     used_formulae = ARGV.formulae
 | |
|     formulae = (ARGV.include? "--installed") ? Formula.installed : Formula
 | |
|     recursive = ARGV.flag? "--recursive"
 | |
| 
 | |
|     uses = formulae.select do |f|
 | |
|       used_formulae.all? do |ff|
 | |
|         if recursive
 | |
|           f.recursive_dependencies.any? { |dep| dep.name == ff.name } ||
 | |
|             f.recursive_requirements.any? { |req| req.name == ff.name }
 | |
|         else
 | |
|           f.deps.any? { |dep| dep.name == ff.name } ||
 | |
|             f.requirements.any? { |req| req.name == ff.name }
 | |
|         end
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     puts_columns uses.map(&:name)
 | |
|   end
 | |
| end
 |