317 Commits
Author SHA1 Message Date
Mike McQuaid dd55d98f84 bin/brew: move logic to Library.
`bin/brew` is getting a bit bloated and it's annoying to open all of
`HOMEBREW_PREFIX` in your editor of choice and have it search through
the `Cellar`. Let's instead keep the bare minimum in `bin/brew` and
move the rest to `Library`.

Closes Homebrew/homebrew#49185.

Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
2017-05-10 23:16:33 -07:00
Martin Afanasjew 92063284e1 bin/brew: enforce UTF-8 locale
Everyone should be using a UTF-8 locale nowadays. Not using one causes
issues like `brew doctor` failing while checking symbolic links that
point at file names with non-ASCII characters, since OS X always uses
Unicode for the file system.

Rely on `locale charmap` to detect the currently selected encoding and
if that's not UTF-8, override the user's choice (if any) by setting
`LC_ALL` to `en_US.UTF-8`, the assumption being that every system has a
usable `en_US.UTF-8` locale installed.

Fixes #44744.
Closes #47247.

Signed-off-by: Martin Afanasjew <martin@afanasjew.de>
2016-01-11 10:18:00 -04:00
Martin Afanasjew be46eefde0 bin/brew: avoid unnecessary 'readlink' invocation
For typical installations where `brew` is not a symbolic link, this
reduces the number of processes that need to be spawned.

Closes #46269.

Signed-off-by: Martin Afanasjew <martin@afanasjew.de>
2016-01-11 10:17:52 -04:00
Martin Afanasjew b70d8220c3 bin/brew: avoid unnecessary 'tr' invocation
This reduces the number of processes that need to be forked. If
libtool's `config.guess` is to be trusted, there was never another
spelling/capitalization other that `Darwin`.
2016-01-11 10:17:36 -04:00
Martin Afanasjew b2aa0db6cc bin/brew: separate variable assignment and export
This very slightly reduces duplication and the risk of inconsistency by
exporting in one branch, but not the other. By putting all the `export`
statements right before the `exec` it is more obvious what is passed on.
2016-01-11 10:17:25 -04:00
Martin Afanasjew 62d4577ce3 bin/brew: quote in assignments for consistency
While `var=$(<command>)` is perfectly valid and won't create any issues,
it is often surprising for less shell-savvy users. Quoting these cases
like in all other instances makes the code more uniform, helps to avoid
future mistakes, and has no downsides.
2016-01-11 10:16:55 -04:00
Martin Afanasjew 5dabe20a51 bin/brew: be consistent about code style 2016-01-11 10:16:47 -04:00
Xu Cheng 67ad5cd346 brew: ensure full path for HOMEBREW_RUBY_PATH 2016-01-11 10:16:14 -04:00
Mike McQuaid c534157697 brew.rb: export HOMEBREW_RUBY_PATH. 2016-01-11 10:16:07 -04:00
Misty De Meo 2326ca7437 bin/brew: don't use framework path b/c of 10.4 2016-01-11 10:15:27 -04:00
Mike McQuaid 3e5be81ecf travis: test 10.9 using Ruby 1.8.
Closes #45816.

Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
2016-01-11 10:15:03 -04:00
Jack Nagel 681ca372c2 Suppress output from cd
Closes #34246.
2014-11-25 22:27:03 -05:00
Adam Vandenberg 1770a8f08f convert tabs to spaces in bin/brew 2014-05-17 10:08:02 -07:00
Jack Nagel 77af406cc3 Quote argument to readlink 2014-05-02 21:55:44 -05:00
Jack Nagel 12a5464558 Use parameter expansion to avoid forking 2014-05-02 21:55:44 -05:00
Misty De Meo 3477c88532 Unset GEM_HOME and GEM_PATH before running brew.rb
This was reported in Tigerbrew, but is a worthwhile fix everywhere.

Fixes mistydemeo/tigerbrew#177.
2014-02-21 20:54:23 -08:00
Mike McQuaid ba2b235611 brew: use a shell wrapper script for brew
This reverts commit dfd4dd12a4.

Fixes the problems from #17683 and #17685.
2013-02-21 21:42:18 +00:00
Mike McQuaid 8b9d620bd7 brew: move to Library/brew.rb
This reverts commit ac156b36d0.
2013-02-21 21:42:18 +00:00
Mike McQuaid a6324cb761 Rename Library/Contributions/cmds -> cmd. 2013-02-18 10:42:44 +00:00
Mike McQuaid 8c02467002 Rework brew command dispatch order.
Make it no longer possible to override e.g. `brew install` with a
script if there is already a built-in Homebrew command named
`brew install`.

References #17673
2013-02-18 10:42:43 +00:00
Mike McQuaid ac156b36d0 Revert "brew: move to Library/brew.rb"
This reverts commit 67d06b84d0.

Closes #17683.
Closes #17685.
2013-02-08 08:55:53 -08:00
Mike McQuaid dfd4dd12a4 Revert "brew: use a shell wrapper script for brew"
This reverts commit 225546a3ee.
2013-02-08 08:55:42 -08:00
Mike McQuaid 225546a3ee brew: use a shell wrapper script for brew
This allows us to force using the system Ruby on OSX but allow
the development of Homebrew for Linux or Windows to not rely
on OSX paths.

Closes #17548.
2013-02-07 17:53:49 -08:00
Mike McQuaid 67d06b84d0 brew: move to Library/brew.rb 2013-02-07 17:48:29 -08:00
Misty De Meo 2c2caf7cf0 Replace sceaga/homebrew with mistydemeo/tigerbrew
@sceaga has discontinued his homebrew fork, so tigerbrew is now PPC/
Tiger users' best bet.
2012-12-27 21:55:15 -04:00
Max Howell a8fadbfaee brew -c1 one line configuration summary
At your option: `brew --config -1`.
2012-08-31 15:48:48 -04:00
Max Howell 9aa121addd If exception has no message raise again
Shows full backtrace, which is useful. Now blank "raise" statements are the equivalent of admitting programmer error. The backtrace will be useful.
2012-08-29 12:41:37 -04:00
Max Howell cf59297ccd Make brew --prefix very fast
Because people use this in .bash_profile etc. We should be as fast as possible.
2012-08-29 12:41:36 -04:00
Max Howell b1dc03861e Much better CTRL-C handling
Let's not show weird error messages when user interrupts during various stages of brew initialization.

Tested by doing `for x in $(brew search); do brew install $x; done` and pressing CTRL-C at random short intervals.
2012-08-29 12:41:35 -04:00
Misty De Meo ef27207e13 brew: downcase arg before sending to Homebrew
Fixes a case where brew would find commands with wrongly-capitalized
user input on case-insensitive systems, then error out with a confusing
message when an invalid method was sent to Homebrew. e.g.:

> brew Update
Error: undefined method `Update' for Homebrew:Module
2012-08-22 19:55:27 -05:00
Max Howell 84bf873aae Don't output Ruby warnings
We don't want bug reports about this crap, even though the user REALLY should listen to the warning message. What actually happens is they blame us instead.

This kind of warning in particular:

warning: Insecure world writable dir /usr/local/bin in PATH
2012-08-06 13:06:36 -04:00
Adam Vandenberg 7e03409233 Make --version/--verbose slightly less confusing. 2012-07-23 14:27:50 -07:00
Misty De Meo d727f8b7f3 Replace /usr/bin/ruby with full Framework path
Rationale: some users insist on replacing the /usr/bin/ruby symlink
to point to another ruby on their system, which may break homebrew.
Use the full Framework path instead, which is less likely to be tampered with.

This also reorganizes the brew --config checks to reflect the different path.

Fixes #12009.

Closes #12333.

Signed-off-by: Misty De Meo <mistydemeo@gmail.com>
2012-06-01 09:24:25 -05:00
Jack Nagel 76604c1cd5 Unify 'which' and which_s' utility methods
'which' only returns a Pathname or nil, and doesn't care about anything
sent to stderr, so just silence it by default and combine the two
methods.

Closes #12115.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
2012-05-07 21:05:47 -05:00
Mike McQuaid 48a82e5f02 Exit with bad exit code on command failures. 2012-03-29 18:44:37 +11:00
Mike McQuaid 9c16145d8c Set MACOS_VERSION as 0 on non-OSX platforms. 2012-03-18 15:43:39 +13:00
Mike McQuaid b27b761931 Rename external commands directory from examples.
Fixes #10829.
2012-03-18 15:34:41 +13:00
Adam Vandenberg 1f774a8141 Remove 'is this a git command?' 2012-03-07 07:00:27 -08:00
Max Howell 9b798ccb20 Move brew output for BuildError into BuildError
So upgrade can output errors but continue to upgrade the rest of the installation.
2012-03-07 12:33:47 +00:00
Max Howell 9d98450b90 Scupper sourceable output if brew install is piped
`brew install > file` should not give "export CC=/foo" output on Build Failures.

Also moved the "Using clang" output to brew when BuildError is thrown as that is where it is interesting, and not if you just do `brew --env`.
2012-03-02 00:59:39 +00:00
Charlie Sharpsteen 9e773c3344 metadata: Record installation options
Adds a new class called `Tab` that acts as a recipt for install options. A
`Tab` can be serialized to a JSON file for future reference.
2011-11-13 12:14:56 -08:00
Dougal Sutherland aa00a56c4e brew command: exit with nonzero status for unknown command name
Signed-off-by: Adam Vandenberg <flangy@gmail.com>
2011-10-27 17:55:34 -07:00
Max Howell fcf20eb3d6 Save config.log to ~/Library/Logs/Homebrew
Also tidied error output. Still could be tidied quite a lot but I am still considering how best to go about it.
2011-08-31 15:35:59 +01:00
Max Howell 63da621a3f Only error out for sudo brew install
Note this only happens if Homebrew is *not* installed sudo. Which is most of the time true.

Fixes #6899
2011-08-17 12:30:21 +01:00
Max Howell 5692191569 Rephrase comment so it makes sense 2011-08-02 14:45:52 +01:00
Max Howell 7030b51e7c If brew is installed non-root refuse to sudo brew
Rationale: people break their installs by mixing sudo and non-sudo usage. They are used to having to `sudo port install` and shit like that, so I understand why the mixing happens.
2011-07-30 11:03:34 +01:00
eregon eb121eeabb use Module#const_get instead of eval
* may be a problem if the constant is scoped (like A::B), but this is not the case
  (const.split('::').inject(Object) { |c, part| c.const_get part } would solve that)
* this was noticed in a comment of 9afc85ad but it has disappeared

Signed-off-by: Adam Vandenberg <flangy@gmail.com>
2011-03-20 19:12:29 -07:00
Max Howell 7fafb5035e brew by itself prints help but exits with non-zero 2011-03-13 13:42:48 +00:00
Max Howell 53f83ccec7 Move the Dir.getwd after help
Because we should always be able to help. And I've checked, it works fine.
2011-03-13 13:42:32 +00:00
Max Howell f828347b82 brew environment alias to --env; like gem 2011-03-13 12:53:07 +00:00