From 896aff0cf25017f85dbdcdd268c923e3756fed58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?fn=20=E2=8C=83=20=E2=8C=A5?= <70830482+FnControlOption@users.noreply.github.com> Date: Fri, 5 Nov 2021 11:22:29 -0700 Subject: [PATCH 1/3] search: split up command into multiple methods --- Library/Homebrew/cmd/search.rb | 103 +++++++++++++++++++-------------- 1 file changed, 60 insertions(+), 43 deletions(-) diff --git a/Library/Homebrew/cmd/search.rb b/Library/Homebrew/cmd/search.rb index 07f8355a9d..562959ccb6 100644 --- a/Library/Homebrew/cmd/search.rb +++ b/Library/Homebrew/cmd/search.rb @@ -69,11 +69,7 @@ module Homebrew def search args = search_args.parse - if (package_manager = PACKAGE_MANAGERS.find { |name,| args[:"#{name}?"] }) - _, url = package_manager - exec_browser url.call(URI.encode_www_form_component(args.named.join(" "))) - return - end + return if search_package_manager(args) query = args.named.join(" ") string_or_regex = query_regexp(query) @@ -81,47 +77,15 @@ module Homebrew if args.desc? search_descriptions(string_or_regex, args) elsif args.pull_request? - only = if args.open? && !args.closed? - "open" - elsif args.closed? && !args.open? - "closed" - end - - GitHub.print_pull_requests_matching(query, only) + search_pull_requests(query, args) else - remote_results = search_taps(query, silent: true) - - local_formulae = search_formulae(string_or_regex) - remote_formulae = remote_results[:formulae] - all_formulae = local_formulae + remote_formulae - - local_casks = search_casks(string_or_regex) - remote_casks = remote_results[:casks] - all_casks = local_casks + remote_casks - print_formulae = args.formula? - print_casks = args.cask? - print_formulae = print_casks = true if !print_formulae && !print_casks - - ohai "Formulae", Formatter.columns(all_formulae) if print_formulae && all_formulae.any? - - if print_casks && all_casks.any? - puts if args.formula? && all_formulae.any? - ohai "Casks", Formatter.columns(all_casks) - end - - count = all_formulae.count + all_casks.count - - if $stdout.tty? && (reason = MissingFormula.reason(query, silent: true)) && local_casks.exclude?(query) - if count.positive? - puts - puts "If you meant #{query.inspect} specifically:" - end - puts reason - end - - odie "No formulae or casks found for #{query.inspect}." if count.zero? + search_names(query, string_or_regex, args) end + print_regex_help(args) + end + + def print_regex_help(args) return unless $stdout.tty? metacharacters = %w[\\ | ( ) [ ] { } ^ $ * + ?].freeze @@ -136,4 +100,57 @@ module Homebrew Surround your query with /slashes/ to search locally by regex. EOS end + + def search_package_manager(args) + package_manager = PACKAGE_MANAGERS.find { |name,| args[:"#{name}?"] } + return false if package_manager.nil? + + _, url = package_manager + exec_browser url.call(URI.encode_www_form_component(args.named.join(" "))) + true + end + + def search_pull_requests(query, args) + only = if args.open? && !args.closed? + "open" + elsif args.closed? && !args.open? + "closed" + end + + GitHub.print_pull_requests_matching(query, only) + end + + def search_names(query, string_or_regex, args) + remote_results = search_taps(query, silent: true) + + local_formulae = search_formulae(string_or_regex) + remote_formulae = remote_results[:formulae] + all_formulae = local_formulae + remote_formulae + + local_casks = search_casks(string_or_regex) + remote_casks = remote_results[:casks] + all_casks = local_casks + remote_casks + print_formulae = args.formula? + print_casks = args.cask? + print_formulae = print_casks = true if !print_formulae && !print_casks + + ohai "Formulae", Formatter.columns(all_formulae) if print_formulae && all_formulae.any? + + if print_casks && all_casks.any? + puts if args.formula? && all_formulae.any? + ohai "Casks", Formatter.columns(all_casks) + end + + count = all_formulae.count + all_casks.count + + if $stdout.tty? && (reason = MissingFormula.reason(query, silent: true)) && local_casks.exclude?(query) + if count.positive? + puts + puts "If you meant #{query.inspect} specifically:" + end + puts reason + end + + odie "No formulae or casks found for #{query.inspect}." if count.zero? + end end From 9438dc94e3724bcf2456c1d550e3386ae0bc9d94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?fn=20=E2=8C=83=20=E2=8C=A5?= <70830482+FnControlOption@users.noreply.github.com> Date: Fri, 5 Nov 2021 11:34:01 -0700 Subject: [PATCH 2/3] search: split missing formula help into its own method --- Library/Homebrew/cmd/search.rb | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/Library/Homebrew/cmd/search.rb b/Library/Homebrew/cmd/search.rb index 562959ccb6..0bfd672a66 100644 --- a/Library/Homebrew/cmd/search.rb +++ b/Library/Homebrew/cmd/search.rb @@ -143,14 +143,21 @@ module Homebrew count = all_formulae.count + all_casks.count - if $stdout.tty? && (reason = MissingFormula.reason(query, silent: true)) && local_casks.exclude?(query) - if count.positive? - puts - puts "If you meant #{query.inspect} specifically:" - end - puts reason - end + print_missing_formula_help(query, count.positive?) if local_casks.exclude?(query) odie "No formulae or casks found for #{query.inspect}." if count.zero? end + + def print_missing_formula_help(query, found_matches) + return unless $stdout.tty? + + reason = MissingFormula.reason(query, silent: true) + return if reason.nil? + + if found_matches + puts + puts "If you meant #{query.inspect} specifically:" + end + puts reason + end end From 4698dfe9ae3f08dbce1a4e8730e22204f8cd9c77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?fn=20=E2=8C=83=20=E2=8C=A5?= <70830482+FnControlOption@users.noreply.github.com> Date: Fri, 5 Nov 2021 11:26:16 -0700 Subject: [PATCH 3/3] search: print newline if neither --formula nor --cask specified --- Library/Homebrew/cmd/search.rb | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Library/Homebrew/cmd/search.rb b/Library/Homebrew/cmd/search.rb index 0bfd672a66..e0166404d0 100644 --- a/Library/Homebrew/cmd/search.rb +++ b/Library/Homebrew/cmd/search.rb @@ -130,16 +130,16 @@ module Homebrew local_casks = search_casks(string_or_regex) remote_casks = remote_results[:casks] all_casks = local_casks + remote_casks + print_formulae = args.formula? print_casks = args.cask? print_formulae = print_casks = true if !print_formulae && !print_casks + print_formulae &&= all_formulae.any? + print_casks &&= all_casks.any? - ohai "Formulae", Formatter.columns(all_formulae) if print_formulae && all_formulae.any? - - if print_casks && all_casks.any? - puts if args.formula? && all_formulae.any? - ohai "Casks", Formatter.columns(all_casks) - end + ohai "Formulae", Formatter.columns(all_formulae) if print_formulae + puts if print_formulae && print_casks + ohai "Casks", Formatter.columns(all_casks) if print_casks count = all_formulae.count + all_casks.count