This reverts commit 252c701c59227c385ef6178fe99523cca8c843bb.
Taps installed prior to running the test suite are not visible to the
test suite as most Homebrew paths are redefined as to not mess up the
local installation.
All of these taps use Homebrew internal APIs (or will shortly) and we
autoinstall them all from `brew $CMD`. We should adjust our CI to ensure
that we never accidentally break these taps when making changes to core
code so that these taps can rely more on this core code rather than
having to e.g. vendor equivalent code that never changes on our end.
If the environment variable HOMEBREW_TEST_GENERIC_OS is set ensure that
neither Mac nor Linux-specific code is loaded. This allows easier
testing of cross-platform code on OS X and will make it easier to port
Homebrew to platforms other than OS X and Linux.
This version is never wanted at this point and it will help Homebrew
Cask deal with the annoying errors that result from having this version
still around (some which I've already help users debug).
Instead of always printing the generic help text, print command-specific
help if it is available and a command raised the `UsageError` exception.
Put the error message underneath the help text (was above) to avoid that
it scrolls off the screen.
Thereby fix a regression where handling the invalid usage would fail to
access `ARGV.usage` removed in c6536066dc39da653d265640c6ba6046bb5def98.
Turns out making `empty_argv` a boolean argument for `Homebrew.help` was
not the best idea and having command-to-path mapping and help extraction
in a single method is not flexible enough.
Also only complain about missing help text when `HOMEBREW_DEVELOPER=1`
and otherwise just print the generic help text.
Showing help makes sense for `brew help <command>`, but showing it for
`brew <command> help` is undesirable and prevents all commands from
accepting a named argument `help` (formula, tap, file name, etc.).
All other help flags are still detected before *and* after the command.
Closes#103.
Signed-off-by: Martin Afanasjew <martin@afanasjew.de>
Keep the footprint of `brew.rb` small. Handle fetching/displaying an
appropriate help text (taking into account various external conditions)
in the `help` command.
Don't exit with a non-zero status code just because an internal command
happens to be undocumented. Also print the generic help in these cases
to provide some help (including a reference to the man page).
This is also used by `brew <cmd> --help`. The basic idea is to have the
documentation as a top level comment in each command file. To find these
comments, they have to be like this `#:`.
This is also used by the `brew man` command to keep the documentation
DRY, and for that there are now a header and footer for the man page.
`Library/ENV` like `Library/Homebrew` is part of Homebrew basecode. It
should be able to be accessed during the `brew tests`.
By adding HOMEBREW_ENV_PATH variable, we allow test suit to locate these
codes.
This means that internal command aliases can be used for Bash commands
(such as the new, Bash-based `brew update`).
FixesHomebrew/homebrew#49182.
ClosesHomebrew/homebrew#49184.
Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
Because `brew.rb` should never be invoked directly, remove executable
bit and shebang to make that more obvious.
ClosesHomebrew/homebrew#48816.
Signed-off-by: Martin Afanasjew <martin@afanasjew.de>
Currently HOMEBREW_BREW_FILE is a String, while other of HOMEBREW_*
variables are all Pathname. This commit unifies them all as Pathname,
so it will not cause any confusion.
ClosesHomebrew/homebrew#48872.
Signed-off-by: Xu Cheng <xucheng@me.com>
Not sure why this is happening (beyond the Chef cookbook stupidly
deciding to not call through `bin/brew`) but fail and print a scary
looking error to hope to point people in the right direction.
ClosesHomebrew/homebrew#48261.
Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
`bin/brew` already sets up a bunch of environment variables. There's no
need to re-export them for external commands. (`HOMEBREW_LIBRARY_PATH`
and `HOMEBREW_CACHE` continue to be determined later in the Ruby code.)
Before this, `sudo brew cask` will auto install Homebrew cask as root
user. This will cause permission problem for files in `Tap` directory.
Therefore, let's check process uid and switch to normal user for tap.
As result, `sudo brew cask` will work as the same before, except tap
files will have the correct permission attributes.
ClosesHomebrew/homebrew#48059.
Signed-off-by: Xu Cheng <xucheng@me.com>
Also, print as a warning to STDERR and print a backtrace in debug mode.
ClosesHomebrew/homebrew#47099.
ClosesHomebrew/homebrew#47154.
Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
Make both `--version` and `-v` print the Homebrew version and exit, if
provided as first and sole argument. `brew --version` no longer accepts
additional arguments (they were previously ignored). Otherwise interpret
`brew -v <arguments>` as if `brew <arguments> -v` was executed instead
(no change here), but no longer print a line with the Homebrew version.
ClosesHomebrew/homebrew#46790.
Signed-off-by: Martin Afanasjew <martin@afanasjew.de>
`reinstall` can currently be executed under sudo and has every chunk of problems
running install under sudo does when `brew` isn't root owned.
Likewise with `postinstall` which we increasingly use to create directories and
move/install files elsewhere. Using sudo there both masks deeper issues and
makes uninstall troublesome.
ClosesHomebrew/homebrew#45112.
Signed-off-by: Dominyk Tiller <dominyktiller@gmail.com>
The xcrun code is stolen right out of the INSTALL script.
Check for user agreement of the Xcode license before permitting any other brew usage to continue.
This prevents the situation where people are instructed to "please re-run as root via sudo" on brew commands.
The check can only fail when Xcode is installed & the active developer dir.
ClosesHomebrew/homebrew#44974.
Signed-off-by: Dominyk Tiller <dominyktiller@gmail.com>
This is unnecessary here because we use it only once. The difference
won't be noticeable but the check is ~5 times faster now.
ClosesHomebrew/homebrew#40901.
Signed-off-by: Baptiste Fontaine <batifon@yahoo.fr>
Issue a warning about Homebrew's very basic support for 10.11 at this point
in time on each run of `brew`.
ClosesHomebrew/homebrew#40536.
Signed-off-by: Dominyk Tiller <dominyktiller@gmail.com>
Don't match `help` at the end of every string because `brew installhelp`
shouldn't really be running help.
ClosesHomebrew/homebrew#36559.
ClosesHomebrew/homebrew#36576.
Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>