diff options
| author | Michael Hackner | 2014-09-06 19:12:03 -0700 |
|---|---|---|
| committer | Jack Nagel | 2014-09-07 18:55:02 -0500 |
| commit | 8d23a43f12d029b79c2683f576e3f6d7ba5feda2 (patch) | |
| tree | 30ffc88a0931a3e1f6e0baf8d0d62e7b80865186 /Library | |
| parent | b544f3e5f14c492f2713e8bc51864d60ec723207 (diff) | |
| download | brew-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.rb | 43 |
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 |
