 ec9cbc6466
			
		
	
	
		ec9cbc6466
		
	
	
	
	
		
			
			Be more useful by being more concise. I referenced dozens of other mature commands’ usage to figure out what to do here. Also separated out the help into its own command for consistency.
		
			
				
	
	
		
			84 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| module HomebrewArgvExtension
 | |
|   def named
 | |
|     @named ||= reject{|arg| arg[0..0] == '-'}
 | |
|   end
 | |
| 
 | |
|   def options_only
 | |
|     select {|arg| arg[0..0] == '-'}
 | |
|   end
 | |
| 
 | |
|   def formulae
 | |
|     require 'formula'
 | |
|     @formulae ||= downcased_unique_named.map{ |name| Formula.factory name }
 | |
|     raise FormulaUnspecifiedError if @formulae.empty?
 | |
|     @formulae
 | |
|   end
 | |
| 
 | |
|   def kegs
 | |
|     require 'keg'
 | |
|     require 'formula'
 | |
|     @kegs ||= downcased_unique_named.collect do |name|
 | |
|       d = HOMEBREW_CELLAR+Formula.caniconical_name(name)
 | |
|       dirs = d.children.select{ |pn| pn.directory? } rescue []
 | |
|       raise NoSuchKegError.new(name) if not d.directory? or dirs.length == 0
 | |
|       raise MultipleVersionsInstalledError.new(name) if dirs.length > 1
 | |
|       Keg.new dirs.first
 | |
|     end
 | |
|     raise KegUnspecifiedError if @kegs.empty?
 | |
|     @kegs
 | |
|   end
 | |
| 
 | |
|   # self documenting perhaps?
 | |
|   def include? arg
 | |
|     @n=index arg
 | |
|   end
 | |
|   def next
 | |
|     at @n+1 or raise UsageError
 | |
|   end
 | |
| 
 | |
|   def force?
 | |
|     flag? '--force'
 | |
|   end
 | |
|   def verbose?
 | |
|     flag? '--verbose' or ENV['HOMEBREW_VERBOSE']
 | |
|   end
 | |
|   def debug?
 | |
|     flag? '--debug' or ENV['HOMEBREW_DEBUG']
 | |
|   end
 | |
|   def quieter?
 | |
|     flag? '--quieter'
 | |
|   end
 | |
|   def interactive?
 | |
|     flag? '--interactive'
 | |
|   end
 | |
|   def build_head?
 | |
|     flag? '--HEAD'
 | |
|   end
 | |
|   def one?
 | |
|     flag? "--1"
 | |
|   end
 | |
| 
 | |
|   def flag? flag
 | |
|     options_only.each do |arg|
 | |
|       return true if arg == flag
 | |
|       next if arg[1..1] == '-'
 | |
|       return true if arg.include? flag[2..2]
 | |
|     end
 | |
|     return false
 | |
|   end
 | |
| 
 | |
|   def usage
 | |
|     require 'cmd/help'
 | |
|     Homebrew.help_s
 | |
|   end
 | |
| 
 | |
|   private
 | |
| 
 | |
|   def downcased_unique_named
 | |
|     # Only lowercase names, not paths or URLs
 | |
|     @downcased_unique_named ||= named.map do |arg|
 | |
|       arg.include?("/") ? arg : arg.downcase
 | |
|     end.uniq
 | |
|   end
 | |
| end
 |