From b63ec18564017534822d749e7e712cd0d45b8ef6 Mon Sep 17 00:00:00 2001 From: Max Howell Date: Tue, 6 Mar 2012 20:11:35 +0000 Subject: [PATCH] Proper single character switch handling Includes a test. So now you can do `brew cleanup -ns` and it will work. --- Library/Homebrew/extend/ARGV.rb | 10 ++++++++++ Library/Homebrew/test/test_ARGV.rb | 17 ++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) 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