diff --git a/Library/Homebrew/brew.rb b/Library/Homebrew/brew.rb index 8c5386612c..2cc339a834 100644 --- a/Library/Homebrew/brew.rb +++ b/Library/Homebrew/brew.rb @@ -78,7 +78,8 @@ begin # - a help flag is passed AND a command is matched # - a help flag is passed AND there is no command specified # - no arguments are passed - if empty_argv || help_flag + # - if cmd is Cask, let Cask handle the help command instead + if (empty_argv || help_flag) && cmd != "cask" require "cmd/help" Homebrew.help cmd, empty_argv: empty_argv # `Homebrew.help` never returns, except for external/unknown commands. @@ -116,8 +117,11 @@ begin if Process.uid.zero? && !brew_uid.zero? tap_commands += %W[/usr/bin/sudo -u ##{brew_uid}] end + # Unset HOMEBREW_HELP to avoid confusing the tap + ENV.delete("HOMEBREW_HELP") if help_flag tap_commands += %W[#{HOMEBREW_BREW_FILE} tap #{possible_tap}] safe_system(*tap_commands) + ENV["HOMEBREW_HELP"] = "1" if help_flag exec HOMEBREW_BREW_FILE, cmd, *ARGV end rescue UsageError => e diff --git a/Library/Homebrew/cask/lib/hbc/cli.rb b/Library/Homebrew/cask/lib/hbc/cli.rb index 9283802d5e..e147c82809 100644 --- a/Library/Homebrew/cask/lib/hbc/cli.rb +++ b/Library/Homebrew/cask/lib/hbc/cli.rb @@ -154,7 +154,7 @@ module Hbc def run command_name, *args = detect_command_and_arguments(*@args) command = if help? - args.unshift(command_name) + args.unshift(command_name) unless command_name.nil? "help" else self.class.lookup_command(command_name) @@ -230,8 +230,7 @@ module Hbc return if @command == "help" && @args.empty? - unknown_command = @args.empty? ? @command : @args.first - raise ArgumentError, "Unknown command: #{unknown_command}" + raise ArgumentError, "help does not take arguments." end def purpose