EricFromCanada a4590f394e
search: drop Homebrew cask tap names from list
Results in searching a list of tokens from official Homebrew cask taps and fully-qualified tokens from other taps, matching the list when searching formulae.
2022-04-25 22:22:03 -04:00

57 lines
1.5 KiB
Ruby

# typed: false
# frozen_string_literal: true
require "cask/cask"
require "cask/cask_loader"
module Homebrew
module Search
module Extension
def search_descriptions(string_or_regex, args)
super
return if args.formula?
puts unless args.cask?
ohai "Casks"
CacheStoreDatabase.use(:cask_descriptions) do |db|
cache_store = CaskDescriptionCacheStore.new(db)
Descriptions.search(string_or_regex, :desc, cache_store).print
end
end
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)
cask_names = Cask::Cask.all.map(&:full_name)
results += DidYouMean::SpellChecker.new(dictionary: cask_names)
.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
end
prepend Extension
end
end