From bab6515668a0e7fd34bea13c5dcc14c46a548562 Mon Sep 17 00:00:00 2001 From: Max Howell Date: Thu, 24 Sep 2009 21:46:04 +0100 Subject: [PATCH] Summarised listings with brew list I'm trying to only show the interesting stuff. You can see a full listing with brew -v list, or by piping to other commands. Tell me if you hate it or love it. --- Library/Homebrew/brew.h.rb | 61 ++++++++++++++++++++++++++++++++++++++ bin/brew | 4 ++- 2 files changed, 64 insertions(+), 1 deletion(-) diff --git a/Library/Homebrew/brew.h.rb b/Library/Homebrew/brew.h.rb index 8878a72b3f..535e3178dd 100644 --- a/Library/Homebrew/brew.h.rb +++ b/Library/Homebrew/brew.h.rb @@ -244,6 +244,67 @@ def fix_PATH end ENV['PATH'] = paths*':' end + + +########################################################## class PrettyListing +class PrettyListing + def initialize path + Pathname.new(path).children.sort{ |a,b| a.to_s.downcase <=> b.to_s.downcase }.each do |pn| + case pn.basename.to_s + when 'bin', 'sbin' + pn.find { |pnn| puts pnn unless pnn.directory? } + when 'lib' + print_dir pn do |pnn| + # dylibs have multiple symlinks and we don't care about them + (pnn.extname == '.dylib' or pnn.extname == '.pc') and not pnn.symlink? + end + else + print_dir pn + end + end + end + +private + def print_dir root + return unless root.directory? + + dirs = [] + remaining_root_files = [] + other = '' + + root.children.sort.each do |pn| + if pn.directory? + dirs << pn + elsif block_given? and yield pn + puts pn + other = 'other ' + else + remaining_root_files << pn + end + end + + dirs.each do |d| + files = [] + d.find { |pn| files << pn unless pn.directory? } + print_remaining_files files, d + end + + print_remaining_files remaining_root_files, root, other + end + + def print_remaining_files files, root, other = '' + case files.length + when 0 + # noop + when 1 + puts *files + else + puts "#{root} (#{files.length} #{other}files)" + end + end +end + + ################################################################ class Cleaner class Cleaner def initialize f diff --git a/bin/brew b/bin/brew index a07077f950..fa8755f28b 100755 --- a/bin/brew +++ b/bin/brew @@ -47,8 +47,10 @@ begin if ARGV.named_empty? ENV['CLICOLOR']=nil exec 'ls', *ARGV.options<