From ba664fa1b4c8f13284c8e5517ec278d456c58bf3 Mon Sep 17 00:00:00 2001 From: apainintheneck Date: Sat, 17 Dec 2022 09:27:33 -0800 Subject: [PATCH] Move Search#search_casks out of extend/os This doesn't need to be isolated anymore because there is a check for the formula and cask args and formula is passed by default on Linux now. --- Library/Homebrew/search.rb | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/search.rb b/Library/Homebrew/search.rb index 674e956b40..fb0bd0b2eb 100644 --- a/Library/Homebrew/search.rb +++ b/Library/Homebrew/search.rb @@ -111,8 +111,33 @@ module Homebrew end.compact end - def search_casks(_string_or_regex) - [] + def search_casks(string_or_regex) + if string_or_regex.is_a?(String) && string_or_regex.match?(HOMEBREW_TAP_CASK_REGEX) + return begin + [Cask::CaskLoader.load(string_or_regex).token] + rescue Cask::CaskUnavailableError + [] + end + end + + cask_tokens = Tap.flat_map(&:cask_tokens).map do |c| + c.sub(%r{^homebrew/cask.*/}, "") + end + + results = cask_tokens.extend(Searchable) + .search(string_or_regex) + + results += DidYouMean::SpellChecker.new(dictionary: cask_tokens) + .correct(string_or_regex) + + results.sort.map do |name| + cask = Cask::CaskLoader.load(name) + if cask.installed? + pretty_installed(cask.full_name) + else + cask.full_name + end + end.uniq end def search_names(query, string_or_regex, args)