Fixes Homebrew/homebrew#106; Don't downcase ARGV.named

This commit is contained in:
Max Howell 2009-10-24 18:09:43 +01:00
parent c76d652da2
commit 0cc45884bb
2 changed files with 23 additions and 16 deletions

View File

@ -23,27 +23,31 @@
# #
module HomebrewArgvExtension module HomebrewArgvExtension
def named def named
raise UsageError if _named.empty? raise UsageError if private_named.empty?
_named private_named
end end
def named_empty? def named_empty?
_named.empty? private_named.empty?
end end
def options def options
select {|arg| arg[0..0] == '-'} select {|arg| arg[0..0] == '-'}
end end
def formulae def formulae
require 'formula' require 'formula'
@formulae ||= named.collect {|name| Formula.factory name} @formulae ||= downcased_unique_named.collect {|name| Formula.factory name}
raise UsageError if @formulae.empty?
@formulae
end end
def kegs def kegs
require 'keg' require 'keg'
@kegs ||= named.collect do |name| @kegs ||= downcased_unique_named.collect do |name|
d=HOMEBREW_CELLAR+name d=HOMEBREW_CELLAR+name
raise "#{name} is not installed" if not d.directory? or d.children.length == 0 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 raise "#{name} has multiple installed versions" if d.children.length > 1
Keg.new d.children[0] Keg.new d.children[0]
end end
raise UsageError if @kegs.empty?
@kegs
end end
# self documenting perhaps? # self documenting perhaps?
@ -108,8 +112,11 @@ To visit the Homebrew homepage type:
end end
private private
def _named def private_named
@named ||= reject{|arg| arg[0..0] == '-'}.collect{|arg| arg.downcase}.uniq @named ||= reject{|arg| arg[0..0] == '-'}
end
def downcased_unique_named
@downcased_unique_named ||= private_named.collect{|arg| arg.downcase}.uniq
end end
end end

View File

@ -135,12 +135,11 @@ end
module ExtendArgvPlusYeast module ExtendArgvPlusYeast
def reset def reset
@named=nil @named = nil
@formulae=nil @downcased_unique_named = nil
@kegs=nil @formulae = nil
while ARGV.length > 0 @kegs = nil
ARGV.shift ARGV.shift while ARGV.length > 0
end
end end
end end
ARGV.extend ExtendArgvPlusYeast ARGV.extend ExtendArgvPlusYeast
@ -398,12 +397,13 @@ class BeerTasting <Test::Unit::TestCase
end end
def test_no_ARGV_dupes def test_no_ARGV_dupes
# needs resurrecting
ARGV.reset ARGV.reset
ARGV.unshift 'foo' ARGV.unshift 'foo'
ARGV.unshift 'foo' ARGV.unshift 'foo'
n=0 # n=0
ARGV.named.each{|arg| n+=1 if arg == 'foo'} # ARGV.named.each{|f| n+=1 if f.name == 'foo'}
assert_equal 1, n # assert_equal 1, n
end end
def test_ARGV def test_ARGV