diff options
| author | Andre Arko | 2009-09-04 15:22:25 -0700 |
|---|---|---|
| committer | Max Howell | 2009-09-05 15:09:17 +0100 |
| commit | c853b5f332c9460140dc5259a10169d25c0fa5aa (patch) | |
| tree | be5562a34f7b43dcbc498a337f75e1479db7a8a6 | |
| parent | 3fb7c33397b7ce35bb553f4efc8d6b4c3bc8475e (diff) | |
| download | homebrew-c853b5f332c9460140dc5259a10169d25c0fa5aa.tar.bz2 | |
`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.
| -rw-r--r-- | Library/Homebrew/ARGV+yeast.rb | 9 | ||||
| -rw-r--r-- | Library/Homebrew/utils.rb | 6 | ||||
| -rwxr-xr-x | bin/brew | 13 |
3 files changed, 17 insertions, 11 deletions
diff --git a/Library/Homebrew/ARGV+yeast.rb b/Library/Homebrew/ARGV+yeast.rb index 9c5317153..550350554 100644 --- a/Library/Homebrew/ARGV+yeast.rb +++ b/Library/Homebrew/ARGV+yeast.rb @@ -45,7 +45,7 @@ module HomebrewArgvExtension Keg.new d.children[0] end end - + # self documenting perhaps? def include? arg @n=index arg @@ -75,7 +75,7 @@ module HomebrewArgvExtension end return false end - + def usage <<-EOS Usage: brew command [formula] ... @@ -88,15 +88,16 @@ Commands: list formula ... link formula ... home formula ... + available [formula or regex] info [formula] [--github] make url prune - + To visit the Homebrew homepage type: brew home EOS end - + private def _named @named ||= reject{|arg| arg[0..0] == '-'}.collect{|arg| arg.downcase}.uniq diff --git a/Library/Homebrew/utils.rb b/Library/Homebrew/utils.rb index 3c6a8e12c..8bd2537e5 100644 --- a/Library/Homebrew/utils.rb +++ b/Library/Homebrew/utils.rb @@ -74,3 +74,9 @@ end def curl url, *args safe_system 'curl', '-f#LA', HOMEBREW_USER_AGENT, url, *args end + +def puts_columns items, cols = 4 + items = items.join("\n") if items.is_a?(Array) + width=`stty size`.chomp.split(" ").last + IO.popen("pr -#{cols} -t", "w"){|io| io.write(items) } +end @@ -60,6 +60,10 @@ begin exec "find", *ARGV.kegs+%w[-not -type d -print] end + when 'search', '-S' + formulae = (HOMEBREW_PREFIX+'Library'+'Formula').children.sort.map{|f| f.basename('.rb') } + puts_columns formulae.grep(Regexp.new(ARGV.first || '')) + when 'edit' if ARGV.named_empty? exec "mate", *Dir["#{HOMEBREW_PREFIX}/Library/*"]<< @@ -71,12 +75,7 @@ begin when 'install' if ARGV.named_empty? - # TODO I tried to columnise it using the 'column' utility but it uses - # tabs rather than spaces and the output looked wrong - puts "You must specify a formula. The following are available:" unless ARGV.quieter? - (HOMEBREW_PREFIX+'Library'+'Formula').children.sort.each do |f| - puts f.basename('.rb') - end + puts "You must specify a formula. Search for available formulae with `brew search'." exit 0 end @@ -88,7 +87,7 @@ begin puts "#{f}: #{ENV[f]}" unless ENV[f].to_s.empty? end end - + unless system "which #{ENV['CC'] or 'cc'} &> /dev/null" and $?.success? raise "We cannot find a c compiler, have you installed the latest Xcode?" end |
