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>
This commit is contained in:
Michael Hackner 2014-09-06 19:12:03 -07:00 committed by Jack Nagel
parent b544f3e5f1
commit 8d23a43f12

View File

@ -10,10 +10,8 @@ module Homebrew
# Things below use the CELLAR, which doesn't until the first formula is installed. # Things below use the CELLAR, which doesn't until the first formula is installed.
return unless HOMEBREW_CELLAR.exist? return unless HOMEBREW_CELLAR.exist?
if ARGV.include? '--pinned' if ARGV.include? '--pinned' or ARGV.include? '--versions'
list_pinned filtered_list
elsif ARGV.include? '--versions'
list_versions
elsif ARGV.named.empty? elsif ARGV.named.empty?
ENV['CLICOLOR'] = nil ENV['CLICOLOR'] = nil
exec 'ls', *ARGV.options_only << HOMEBREW_CELLAR exec 'ls', *ARGV.options_only << HOMEBREW_CELLAR
@ -57,28 +55,29 @@ module Homebrew
exec 'find', *args exec 'find', *args
end end
def list_versions def filtered_list
if ARGV.named.empty? names = if ARGV.named.empty?
HOMEBREW_CELLAR.subdirs HOMEBREW_CELLAR.subdirs
else else
ARGV.named.map{ |n| HOMEBREW_CELLAR+n }.select{ |pn| pn.exist? } 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
end if ARGV.include? '--pinned'
pinned_versions = {}
def list_pinned names.each do |d|
if ARGV.named.empty? keg_pin = (HOMEBREW_LIBRARY/"PinnedKegs"/d.basename.to_s)
HOMEBREW_CELLAR.subdirs if keg_pin.exist? or keg_pin.symlink?
else pinned_versions[d] = keg_pin.readlink.basename.to_s
ARGV.named.map{ |n| HOMEBREW_CELLAR+n }.select{ |pn| pn.exist? } end
end.select do |d| end
keg_pin = (HOMEBREW_LIBRARY/"PinnedKegs"/d.basename.to_s) pinned_versions.each do |d, version|
keg_pin.exist? or keg_pin.symlink? puts "#{d.basename}".concat(ARGV.include?('--versions') ? " #{version}" : '')
end.each do |d| end
puts d.basename 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 end
end end