aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorMichael Hackner2014-09-06 19:12:03 -0700
committerJack Nagel2014-09-07 18:55:02 -0500
commit8d23a43f12d029b79c2683f576e3f6d7ba5feda2 (patch)
tree30ffc88a0931a3e1f6e0baf8d0d62e7b80865186 /Library
parentb544f3e5f14c492f2713e8bc51864d60ec723207 (diff)
downloadbrew-8d23a43f12d029b79c2683f576e3f6d7ba5feda2.tar.bz2
Fix brew list when combining --pinned and --versions
Fixes Homebrew/homebrew#32067 Closes Homebrew/homebrew#32099. Closes Homebrew/homebrew#32134. Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/cmd/list.rb43
1 files changed, 21 insertions, 22 deletions
diff --git a/Library/Homebrew/cmd/list.rb b/Library/Homebrew/cmd/list.rb
index 4f9b43e1c..ac9368212 100644
--- a/Library/Homebrew/cmd/list.rb
+++ b/Library/Homebrew/cmd/list.rb
@@ -10,10 +10,8 @@ module Homebrew
# Things below use the CELLAR, which doesn't until the first formula is installed.
return unless HOMEBREW_CELLAR.exist?
- if ARGV.include? '--pinned'
- list_pinned
- elsif ARGV.include? '--versions'
- list_versions
+ if ARGV.include? '--pinned' or ARGV.include? '--versions'
+ filtered_list
elsif ARGV.named.empty?
ENV['CLICOLOR'] = nil
exec 'ls', *ARGV.options_only << HOMEBREW_CELLAR
@@ -57,28 +55,29 @@ module Homebrew
exec 'find', *args
end
- def list_versions
- if ARGV.named.empty?
+ def filtered_list
+ names = if ARGV.named.empty?
HOMEBREW_CELLAR.subdirs
else
ARGV.named.map{ |n| HOMEBREW_CELLAR+n }.select{ |pn| pn.exist? }
- end.each do |d|
- versions = d.subdirs.map { |pn| pn.basename.to_s }
- next if ARGV.include?('--multiple') && versions.count < 2
- puts "#{d.basename} #{versions*' '}"
end
- end
-
- def list_pinned
- if ARGV.named.empty?
- HOMEBREW_CELLAR.subdirs
- else
- ARGV.named.map{ |n| HOMEBREW_CELLAR+n }.select{ |pn| pn.exist? }
- end.select do |d|
- keg_pin = (HOMEBREW_LIBRARY/"PinnedKegs"/d.basename.to_s)
- keg_pin.exist? or keg_pin.symlink?
- end.each do |d|
- puts d.basename
+ if ARGV.include? '--pinned'
+ pinned_versions = {}
+ names.each do |d|
+ keg_pin = (HOMEBREW_LIBRARY/"PinnedKegs"/d.basename.to_s)
+ if keg_pin.exist? or keg_pin.symlink?
+ pinned_versions[d] = keg_pin.readlink.basename.to_s
+ end
+ end
+ pinned_versions.each do |d, version|
+ puts "#{d.basename}".concat(ARGV.include?('--versions') ? " #{version}" : '')
+ end
+ else # --versions without --pinned
+ names.each do |d|
+ versions = d.subdirs.map { |pn| pn.basename.to_s }
+ next if ARGV.include?('--multiple') && versions.count < 2
+ puts "#{d.basename} #{versions*' '}"
+ end
end
end
end