aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorMike McQuaid2014-02-13 20:26:29 +0000
committerMike McQuaid2014-02-14 18:32:56 +0000
commiteabe9dc6d058bb7f497810d10544845752e15ff8 (patch)
tree17bcb4cd42dd3c34a2a0acfbabf8d77379589dd0 /Library
parenta7b515e503fecd4ceb4f09fce790046be54aba6e (diff)
downloadbrew-eabe9dc6d058bb7f497810d10544845752e15ff8.tar.bz2
brew: check for --help and friends in more of ARGV
Let's check for e.g. --help anywhere in the ARGV array rather than just the first value to avoid brew upgrade --help causing problems. Closes Homebrew/homebrew#26675. Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/extend/ARGV.rb8
-rwxr-xr-xLibrary/brew.rb10
2 files changed, 13 insertions, 5 deletions
diff --git a/Library/Homebrew/extend/ARGV.rb b/Library/Homebrew/extend/ARGV.rb
index c2e1a9c2e..55f6b356a 100644
--- a/Library/Homebrew/extend/ARGV.rb
+++ b/Library/Homebrew/extend/ARGV.rb
@@ -157,6 +157,14 @@ module HomebrewArgvExtension
include? '--force-bottle'
end
+ def help?
+ empty? || grep(/(-h|--help|--usage|-\?|help)/).any?
+ end
+
+ def version?
+ include? '--version'
+ end
+
# eg. `foo -ns -i --bar` has three switches, n, s and i
def switch? switch_character
return false if switch_character.length > 1
diff --git a/Library/brew.rb b/Library/brew.rb
index 455f30464..27d66d20f 100755
--- a/Library/brew.rb
+++ b/Library/brew.rb
@@ -16,14 +16,14 @@ $:.unshift(HOMEBREW_LIBRARY_PATH + '/vendor')
$:.unshift(HOMEBREW_LIBRARY_PATH)
require 'global'
-case ARGV.first when '-h', '--help', '--usage', '-?', 'help', nil
+if ARGV.help?
require 'cmd/help'
- puts Homebrew.help_s
- exit ARGV.first ? 0 : 1
-when '--version'
+ puts ARGV.usage
+ exit ARGV.any? ? 0 : 1
+elsif ARGV.version?
puts HOMEBREW_VERSION
exit 0
-when '-v'
+elsif ARGV.first == '-v'
puts "Homebrew #{HOMEBREW_VERSION}"
# Shift the -v to the end of the parameter list
ARGV << ARGV.shift