46 Commits

Author SHA1 Message Date
Max Howell
15e145709b Fix inreplace barfing over Pathnames
This fix should be fairly tolerant of types.
2010-02-20 02:07:51 +00:00
Max Howell
b48d46d4bc Allow inreplace to operate over arrays
I like that String.each is interchangeable with Array.each :)
2010-02-19 17:34:40 +00:00
Adam Vandenberg
6671d6275d remove_make_var! should not leave an empty assignment 2010-02-09 09:21:25 -08:00
Adam Vandenberg
5474cf1a95 Let change_make_var! append to existing value.
To existing flag value can be specified with "\\1".
To append values to a flag, call with:
    s.change_make_var! "THE_FLAG", "\\1 more-flag-values"

The same trick can be used to prepend or surround values as well.
2010-02-02 08:57:56 -08:00
Adam Vandenberg
fb8707df4e Remove spaces around make-style variables.
Removing the spaces around equals for make-style variables makes
the change_make_var! method compatible with shell scripts as well
as makefiles.
2010-01-30 22:48:44 -08:00
Adam Vandenberg
f9a0f3e80f Add gzip utility function. 2010-01-30 10:39:56 -08:00
Max Howell
d1355af66e Check for bad values of console_width
Fixes Homebrew/homebrew#453.
2010-01-16 13:12:38 +00:00
Max Howell
df79d74e13 Add quiet_system
Same as Kernel.system, but prints no output.
2010-01-13 11:23:15 +00:00
Adam Vandenberg
446be8cdd7 Add Makefile var and multi-replace support inreplace. 2010-01-13 11:23:07 +00:00
Max Howell
5bcffbb5e3 Escape spaces for archs_for_command
Use inject for concision.

Rename to archs from arch as it returns an array.
2010-01-13 11:16:24 +00:00
Adam Vandenberg
f533224427 If there is no output, don't find longest length. 2009-12-20 12:56:47 +00:00
Kieran Pilkington
85ffad8117 Making column amount and width dynamic, adjusting to console size. 2009-12-17 19:19:33 +00:00
Max Howell
ba1c0af94c Apparently the map didn't work on Leopard 2009-12-04 18:16:32 +00:00
Manfred Stienstra
5ff55b1739 Cast all arguments for Kernel#exec to string.
In the FFMPEG formula the revision number is represented as an integer,
this ends up as an argument to Kernel#exec and it doesn't really like
that. The fix is to cast all arguments to a string.

Fixes Homebrew/homebrew#171.
2009-12-04 14:16:45 +00:00
Max Howell
4bd32c615e Fix system() exception showing regression
Rather than showing a backtrace that says "couldn't find command blah". Admittedly it's possible that the error will be something else, but unlikely. And this is neater.

Ideally we'd push the bt through an error pipe like we do with install.rb. And I guess we'll do this eventually.
2009-11-11 19:42:35 +00:00
Max Howell
45a1a2ba3c Tty.em; bold white underlined 2009-11-11 18:36:50 +00:00
Max Howell
04f3ddeac0 Ignore stdout during GitDownloadStrategy.stage 2009-11-09 18:24:36 +00:00
Max Howell
1da26d89ea Don't use Kernel.system much
It just seems to behave strangely with SIGINT. Eg. SIGINT causes tar to exit, but the SIGINT is ignored by our process. This is not the case when used with curl.
2009-11-09 17:55:11 +00:00
Max Howell
22afc5e1c7 Use our own popen implementation in Formula.system
The rationale here is that the --verbose mode had a bug where it didn't escape its parameters properly. Which caused ocassionally cryptic issues.
2009-11-08 15:21:09 +00:00
Max Howell
1e879eaee8 Propagate exit status in ExecutioError exception 2009-11-07 18:22:36 +00:00
Max Howell
e289164adc Implement inreplace natively in Ruby
I found yet another instance where the escaping wasn't perfect, so got fed up and just did it in Ruby. I hope this works for all existing usage. It should.

The bonus here is that you can use RegExps now.
2009-10-23 19:22:51 +01:00
Max Howell
e1995d60ef Call to_s on ohai parameters 2009-10-23 19:22:51 +01:00
Max Howell
8eb97a7db5 Put colors in Tty class
Changed format of Errors and Warnings slightly.
2009-10-15 16:51:58 +01:00
Max Howell
543a113712 Some subdirs and renames to aid homebrew n00bs
The classes better reflect their contents. I'm sure this change may be
contentious, but I am a sucker for trying to create source bases that are easy
to get to grips with and easy to navigate.

brewkit.rb is now a deprecated file.
2009-10-15 16:51:53 +01:00
Max Howell
5c33fdfb5b If an exception has newlines, render them well 2009-10-01 15:48:51 +01:00
Max Howell
44a1fa418e Use full paths to all system utilities
Otherwise you run the risk of not running the exact version / make of the utility you planned.

Fixes Homebrew/homebrew#48

Really we need to do this formula too, so I guess a make and cmake function are on the way…
2009-09-24 18:26:24 +01:00
Pierre Riteau
c9c7075dc1 Don't print text as columns when the output is not a tty
The code also makes sure to terminate with a newline, unless the
output is empty.
2009-09-22 20:43:06 +02:00
Max Howell
357751633e Prettier install output
This way caveats and other warnings/errors don't appear connected to the Summary text.
2009-09-17 18:42:56 +01:00
Max Howell
c28bd7b571 Allow formulae to use __END__
For this to work the "running script" must be the formulae file. Making this
so wasn't so hard, there is now an install.rb script which is included with
the -r flag to the ruby executable. An at_exit handler calls the install
function.

Having the install logic in its own file made it feel like there was so much
space that I added extra error handling. So there is something to be said for
separating functionality out into its own files.

Still the error handling sucks, we'll need to marshall the exception back to
the bin/brew command. Which is another PITA.

Still overall I think this will prove worthwhile. But if it doesn't we'll
revert.

As a first usage, you can put a diff after __END__ and return DATA from
Formula::patches to make Homebrew aware of it.
2009-09-16 14:49:06 +01:00
Adam Vandenberg
981dba1b35 Function to return a binary's Mach-O architectures
Added a utility method to get an array of architecture names for
a given executable.

This will be useful for, say, figuring out what Python was compiled for,
to know what to compile a C-based module as.

Signed Off By: Max Howell <max@methylblue.com>

I added a test and made the function use `which` if the path provided is not
absolute. I considered allowing relative paths, but then it is possible for
the function to take eg. the svn binary from the current directory when you
meant the one in the path, and that could be a confusing bug.
2009-09-10 18:17:15 +01:00
Adam Vandenberg
c3169b5600 Display exit code when nonzero.
Brew fails if a tool (make, or whatever) doesn't return an exit code
of 0. This patch displays the non-zero code on failure, so we can
better diagnose what caused the build to fail (or if we need to add
that exit code as exception 'success code'.)
2009-09-10 18:17:15 +01:00
Max Howell
9f07e5d9fd Handle $EDITOR with spaces
Fixes Homebrew/homebrew#40
2009-09-10 18:16:49 +01:00
Max Howell
680e201923 Fix double newline after Interrupt
Seems to be an issue with Ruby system() call doing a double fork.
2009-09-05 20:46:07 +01:00
scoates
7709c3699a Use ENV[EDITOR] if possible
Defaulting to EDITOR, then checking for the mate command, and then using
vim as a last resort.

Signed Off By: Max Howell <max@methylblue.com>

Plain brew edit still uses Textmate though because a client that
supported a project concept is required for that particular feature.
Patches for that welcome.
2009-09-05 19:10:56 +01:00
Andre Arko
c4041f4492 `brew search' command
Example usage:
  brew search w  # formulae containing w
  brew search ^w # formulae starting with w

No parameters lists all packages.

Also adds puts_columns to util, and uses it for output.

Signed Off By: Max Howell <max@methylblue.com>

I changed the command from 'available' to search because this is more similar
to how other tools call this function.

The short form is -S, which is the "pacman" tool equivalent.
2009-09-05 15:09:17 +01:00
Max Howell
87605d534b Don't trim ohai message in verbose mode 2009-09-05 14:35:26 +01:00
Eloy Duran
a4ba1c137f watch_out_for_spill
New method which uses RubyCocoa with the FSEvents API from Rucola to watch if
files aren't installed outside the Homebrew prefix. Right now the paths being
watched are: /System, /usr, /etc, /sbin, /bin, and /Applications.
2009-09-05 14:35:15 +01:00
Max Howell
18d9fbee98 Closes Homebrew/homebrew#27 (permissions to strict)
I went with 0555 as the permissions changing only occurs to bin, sbin and lib, so there shouldn't be any files in there for editing in general anyway.

Formulae can specify not to "clean" any particular file by reimplementing the skip_clean? function, in case some config file or what not ends up in there.

Also committing cosmetic fix to pretty_duration function.
2009-09-03 20:58:33 +01:00
Max Howell
84d034f9fb docs is an alias for doc sometimes apparently
We don't install documentation to save space. It seems pointless in this
modern age where the online docs are probably more up to date. However I do
believe this should be an option, defaulting to "don't install".
2009-08-31 18:23:41 +01:00
Max Howell
4d63b87e0a Change license to BSD
I confirmed this change with all relevant contributors first.
2009-08-31 16:09:17 +01:00
Max Howell
4671526d70 Raise a SystemExit exception to prevent backtrace 2009-08-24 01:04:54 +01:00
Adam Vandenberg
0eaf4bbcd9 Factor out downloading from Formula
This patch adds a ArchiveDownloadStrategy that handles downloading
tarbarlls and decompressing them into the staging area ready for brewing.

Refactored safe_system and curl into utils.rb

Signed-off-by: Max Howell <max@methylblue.com>

Modifications to Adam's original patch:

I reverted objectification of checksum verification because I couldn't think
of any other download validation methods that might be useful to us in the
future, so allowing such flexibility had no advantages. If we ever need this
to be OO we can add it. But for now less complexity is preferable.

I removed the @svnurl class member. Instead download_strategy is autodetected
by examining the url. The user can override the download_strategy in case this
fails. Thus we already can easily add support for clones of git repositories.
2009-08-24 01:03:23 +01:00
Max Howell
69c076e741 ohai takes multiple parameters
Will not show any of the block if the 1st additional parameter is nil
2009-08-10 18:11:23 +01:00
Max Howell
760c083c0c Refactor
Large refactor to Formula, mostly improving reliability and error handling but
also layout and readability.

General improvements so testing can be more complete.

Patches are automatically downloaded and applied for Formula that return a
list of urls from Formula::patches.

Split out the brew command logic to facilitate testing.

Facility from Adam Vandenberg to allow selective cleaning of files, added
because Python doesn't work when stripped.
2009-08-10 18:11:17 +01:00
Max Howell
a39e0d20c3 opoo function for warning messages 2009-07-31 04:59:08 +01:00
Max Howell
9b19f194cc Refactor $foo into HOMEBREW_FOO
CONSTANTS are the far saner choice for these important parameters.

Split env up so I can redefine the CONSTANTS in unittest.rb.
2009-07-31 04:59:02 +01:00