diff --git a/Library/Homebrew/cmd/search.rb b/Library/Homebrew/cmd/search.rb index 2771d06f7990e000bd187afe85af000892992d96..3914b455a55f798a3c5bebdd99d6eb2d24fad0fe 100644 --- a/Library/Homebrew/cmd/search.rb +++ b/Library/Homebrew/cmd/search.rb @@ -52,16 +52,17 @@ module Homebrew return end - if args.remaining.empty? + if args.remaining.empty? && !args.desc? puts Formatter.columns(Formula.full_names.sort) - elsif args.desc? - query = args.remaining.join(" ") - string_or_regex = query_regexp(query) - Descriptions.search(string_or_regex, :desc).print - else - query = args.remaining.join(" ") - string_or_regex = query_regexp(query) + return + end + query = args.remaining.join(" ") + string_or_regex = query_regexp(query) + + if args.desc? + search_descriptions(string_or_regex) + else remote_results = search_taps(query, silent: true) local_formulae = search_formulae(string_or_regex) diff --git a/Library/Homebrew/extend/os/mac/search.rb b/Library/Homebrew/extend/os/mac/search.rb index aae84dd7e14c7372a43262df108adc6b398cf3e6..5d1d7cc78a16288a0cf6e9ad1297699f63b715b0 100644 --- a/Library/Homebrew/extend/os/mac/search.rb +++ b/Library/Homebrew/extend/os/mac/search.rb @@ -3,24 +3,41 @@ require "hbc/cask_loader" module Homebrew module Search - def search_casks(string_or_regex) - if string_or_regex.is_a?(String) && string_or_regex.match?(HOMEBREW_TAP_CASK_REGEX) - return begin - [Hbc::CaskLoader.load(string_or_regex).token] - rescue Hbc::CaskUnavailableError - [] + module Extension + def search_descriptions(string_or_regex) + super + + puts + + ohai "Casks" + Hbc::Cask.to_a.extend(Searchable) + .search(string_or_regex, &:name) + .each do |cask| + puts "#{Tty.bold}#{cask.token}:#{Tty.reset} #{cask.name.join(", ")}" end end - results = Hbc::Cask.search(string_or_regex, &:token).sort_by(&:token) + def search_casks(string_or_regex) + if string_or_regex.is_a?(String) && string_or_regex.match?(HOMEBREW_TAP_CASK_REGEX) + return begin + [Hbc::CaskLoader.load(string_or_regex).token] + rescue Hbc::CaskUnavailableError + [] + end + end - results.map do |cask| - if cask.installed? - pretty_installed(cask.token) - else - cask.token + results = Hbc::Cask.search(string_or_regex, &:token).sort_by(&:token) + + results.map do |cask| + if cask.installed? + pretty_installed(cask.token) + else + cask.token + end end end end + + prepend Extension end end diff --git a/Library/Homebrew/search.rb b/Library/Homebrew/search.rb index 3c78faf27ef96692bbde7a8b0ea88e6df8ff2470..6362e3114f606fe0fb0c0038ff24885c348ab83b 100644 --- a/Library/Homebrew/search.rb +++ b/Library/Homebrew/search.rb @@ -12,6 +12,11 @@ module Homebrew raise "#{query} is not a valid regex." end + def search_descriptions(string_or_regex) + ohai "Formulae" + Descriptions.search(string_or_regex, :desc).print + end + def search_taps(query, silent: false) if query.match?(Regexp.union(HOMEBREW_TAP_FORMULA_REGEX, HOMEBREW_TAP_CASK_REGEX)) _, _, query = query.split("/", 3)