From da66bf96b7998c2b68b2be8a0fccee6368fd1204 Mon Sep 17 00:00:00 2001 From: Maxim Belkin Date: Fri, 13 Apr 2018 03:02:47 -0500 Subject: [PATCH 1/3] list.rb: use CLI::Parser to better handle args * --multiple now assumes --versions * Use CLI::Parser (that, in turns, uses OpenStruct) to handle arguments --- Library/Homebrew/cmd/list.rb | 39 +++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/Library/Homebrew/cmd/list.rb b/Library/Homebrew/cmd/list.rb index 482100ba2f..99f0a7ea3e 100644 --- a/Library/Homebrew/cmd/list.rb +++ b/Library/Homebrew/cmd/list.rb @@ -20,13 +20,28 @@ require "metafiles" require "formula" +require "cli_parser" module Homebrew module_function def list + @args = CLI::Parser.parse do + switch "--unbrewed" + switch "--pinned" + switch "--versions" + switch "--full-name" + switch "--multiple" + switch :verbose + end + + if @args.multiple? && !@args.versions? + opoo "--multiple requires --versions" + @args.send("versions?=", true) + end + # Use of exec means we don't explicitly exit - list_unbrewed if ARGV.flag? "--unbrewed" + list_unbrewed if @args.unbrewed? # Unbrewed uses the PREFIX, which will exist # Things below use the CELLAR, which doesn't until the first formula is installed. @@ -35,10 +50,10 @@ module Homebrew return end - if ARGV.include?("--pinned") || ARGV.include?("--versions") + if @args.pinned? || @args.versions? filtered_list elsif ARGV.named.empty? - if ARGV.include? "--full-name" + if @args.full_name? full_names = Formula.installed.map(&:full_name).sort(&tap_and_name_comparison) return if full_names.empty? puts Formatter.columns(full_names) @@ -46,7 +61,7 @@ module Homebrew ENV["CLICOLOR"] = nil exec "ls", *ARGV.options_only << HOMEBREW_CELLAR end - elsif ARGV.verbose? || !$stdout.tty? + elsif Homebrew.args.verbose? || !$stdout.tty? exec "find", *ARGV.kegs.map(&:to_s) + %w[-not -type d -print] else ARGV.kegs.each { |keg| PrettyListing.new keg } @@ -87,13 +102,13 @@ module Homebrew dirs.delete "etc" dirs.delete "var" - args = dirs.sort + %w[-type f (] - args.concat UNBREWED_EXCLUDE_FILES.flat_map { |f| %W[! -name #{f}] } - args.concat UNBREWED_EXCLUDE_PATHS.flat_map { |d| %W[! -path #{d}] } - args.concat %w[)] + arguments = dirs.sort + %w[-type f (] + arguments.concat UNBREWED_EXCLUDE_FILES.flat_map { |f| %W[! -name #{f}] } + arguments.concat UNBREWED_EXCLUDE_PATHS.flat_map { |d| %W[! -path #{d}] } + arguments.concat %w[)] cd HOMEBREW_PREFIX - exec "find", *args + exec "find", *arguments end def filtered_list @@ -106,7 +121,7 @@ module Homebrew rack.exist? end end - if ARGV.include? "--pinned" + if @args.pinned? pinned_versions = {} names.sort.each do |d| keg_pin = (HOMEBREW_PINNED_KEGS/d.basename.to_s) @@ -115,12 +130,12 @@ module Homebrew end end pinned_versions.each do |d, version| - puts d.basename.to_s.concat(ARGV.include?("--versions") ? " #{version}" : "") + puts d.basename.to_s.concat(@args.versions? ? " #{version}" : "") end else # --versions without --pinned names.sort.each do |d| versions = d.subdirs.map { |pn| pn.basename.to_s } - next if ARGV.include?("--multiple") && versions.length < 2 + next if @args.multiple? && versions.length < 2 puts "#{d.basename} #{versions * " "}" end end From 288c9c6dc7ff15df8467ca30caf35c74303bdf0d Mon Sep 17 00:00:00 2001 From: Maxim Belkin Date: Mon, 21 May 2018 18:37:34 +0000 Subject: [PATCH 2/3] list.rb: new syntax for multiple + versions flags --- Library/Homebrew/cmd/list.rb | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/Library/Homebrew/cmd/list.rb b/Library/Homebrew/cmd/list.rb index 99f0a7ea3e..d43491f3b1 100644 --- a/Library/Homebrew/cmd/list.rb +++ b/Library/Homebrew/cmd/list.rb @@ -31,15 +31,10 @@ module Homebrew switch "--pinned" switch "--versions" switch "--full-name" - switch "--multiple" + switch "--multiple", required_for: "--versions" switch :verbose end - if @args.multiple? && !@args.versions? - opoo "--multiple requires --versions" - @args.send("versions?=", true) - end - # Use of exec means we don't explicitly exit list_unbrewed if @args.unbrewed? From f7e308ab44f15db2e2d3536e1d8deb829705102e Mon Sep 17 00:00:00 2001 From: Maxim Belkin Date: Mon, 21 May 2018 20:21:30 +0000 Subject: [PATCH 3/3] list.rb: use new syntax correctly --- Library/Homebrew/cmd/list.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/cmd/list.rb b/Library/Homebrew/cmd/list.rb index d43491f3b1..bc8330e26d 100644 --- a/Library/Homebrew/cmd/list.rb +++ b/Library/Homebrew/cmd/list.rb @@ -31,7 +31,7 @@ module Homebrew switch "--pinned" switch "--versions" switch "--full-name" - switch "--multiple", required_for: "--versions" + switch "--multiple", depends_on: "--versions" switch :verbose end