Cache ARGV calcs
Means unshift doesn't work, but well, that's almost a feature :P
This commit is contained in:
		
							parent
							
								
									a4ba1c137f
								
							
						
					
					
						commit
						e30c1c8850
					
				@ -23,23 +23,22 @@
 | 
			
		||||
#
 | 
			
		||||
module HomebrewArgvExtension
 | 
			
		||||
  def named
 | 
			
		||||
    nn=namedp
 | 
			
		||||
    raise UsageError if nn.empty?
 | 
			
		||||
    nn
 | 
			
		||||
    raise UsageError if _named.empty?
 | 
			
		||||
    _named
 | 
			
		||||
  end
 | 
			
		||||
  def named_empty?
 | 
			
		||||
    namedp.empty?
 | 
			
		||||
    _named.empty?
 | 
			
		||||
  end
 | 
			
		||||
  def options
 | 
			
		||||
    select {|arg| arg[0..0] == '-'}
 | 
			
		||||
  end
 | 
			
		||||
  def formulae
 | 
			
		||||
    require 'formula'
 | 
			
		||||
    named.collect {|name| Formula.factory name}
 | 
			
		||||
    @formulae ||= named.collect {|name| Formula.factory name}
 | 
			
		||||
  end
 | 
			
		||||
  def kegs
 | 
			
		||||
    require 'keg'
 | 
			
		||||
    named.collect do |name|
 | 
			
		||||
    @kegs ||= named.collect do |name|
 | 
			
		||||
      d=HOMEBREW_CELLAR+name
 | 
			
		||||
      raise "#{name} is not installed" if not d.directory? or d.children.length == 0
 | 
			
		||||
      raise "#{name} has multiple installed versions" if d.children.length > 1
 | 
			
		||||
@ -99,8 +98,8 @@ To visit the Homebrew homepage type:
 | 
			
		||||
  end
 | 
			
		||||
  
 | 
			
		||||
private
 | 
			
		||||
  def namedp
 | 
			
		||||
    nn=reject{|arg| arg[0..0] == '-'}.collect{|arg| arg.downcase}.uniq
 | 
			
		||||
  def _named
 | 
			
		||||
    @named ||= reject{|arg| arg[0..0] == '-'}.collect{|arg| arg.downcase}.uniq
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -105,6 +105,14 @@ def nostdout
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
module ExtendArgvPlusYeast
 | 
			
		||||
  def stick_an_arg_in_thar
 | 
			
		||||
    @named=nil
 | 
			
		||||
    unshift 'foo'
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
ARGV.extend ExtendArgvPlusYeast
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class BeerTasting <Test::Unit::TestCase
 | 
			
		||||
  def test_version_all_dots
 | 
			
		||||
@ -316,7 +324,7 @@ class BeerTasting <Test::Unit::TestCase
 | 
			
		||||
    
 | 
			
		||||
    (HOMEBREW_CELLAR+'foo'+'0.1').mkpath
 | 
			
		||||
    
 | 
			
		||||
    ARGV.unshift 'foo'
 | 
			
		||||
    ARGV.stick_an_arg_in_thar
 | 
			
		||||
    assert_equal 1, ARGV.named.length
 | 
			
		||||
    assert_equal 1, ARGV.kegs.length
 | 
			
		||||
    assert_raises(FormulaUnavailableError) { ARGV.formulae }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user