diff --git a/Library/Homebrew/extend/ARGV.rb b/Library/Homebrew/extend/ARGV.rb index 24d70cb1f8..1300583272 100644 --- a/Library/Homebrew/extend/ARGV.rb +++ b/Library/Homebrew/extend/ARGV.rb @@ -103,6 +103,16 @@ module HomebrewArgvExtension return false end + # eg. `foo -ns -i --bar` has three switches, n, s and i + def switch? switch_character + return false if switch_character.length > 1 + options_only.each do |arg| + next if arg[1..1] == '-' + return true if arg.include? switch_character + end + return false + end + def usage require 'cmd/help' Homebrew.help_s diff --git a/Library/Homebrew/test/test_ARGV.rb b/Library/Homebrew/test/test_ARGV.rb index 134921dca4..7832f71e41 100644 --- a/Library/Homebrew/test/test_ARGV.rb +++ b/Library/Homebrew/test/test_ARGV.rb @@ -29,5 +29,20 @@ class ARGVTests < Test::Unit::TestCase assert_equal 1, ARGV.kegs.length assert_raises(FormulaUnavailableError) { ARGV.formulae } end - + + def test_switch? + ARGV.reset + ARGV.unshift "-ns" + ARGV.unshift "-i" + ARGV.unshift "--bar" + assert ARGV.switch?('n') + assert ARGV.switch?('s') + assert ARGV.switch?('i') + assert !ARGV.switch?('b') + assert !ARGV.switch?('ns') + assert !ARGV.switch?('bar') + assert !ARGV.switch?('--bar') + assert !ARGV.switch?('-n') + end + end