`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.
This commit is contained in:
Andre Arko 2009-09-04 15:22:25 -07:00 committed by Max Howell
parent a2cd3367a8
commit c4041f4492
3 changed files with 17 additions and 11 deletions

View File

@ -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

View File

@ -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

View File

@ -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