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
commit42203100f7734ecde25704f9930f56c7de25c3ea (patch)
treecbe72221536ec1a744cc2e15e3fe23c43cf73c49 /Library
parent9062ea239de127b9bd6202bf2e4da7a22ba9e29d (diff)
downloadhomebrew-42203100f7734ecde25704f9930f56c7de25c3ea.tar.bz2
Fix brew list when combining --pinned and --versions
Fixes #32067 Closes #32099. Closes #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