Allow searching Casks by name.

This commit is contained in:
Markus Reiter 2018-06-18 16:09:13 +02:00
parent b21430b13c
commit b265d870ed
3 changed files with 43 additions and 20 deletions

View File

@ -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)

View File

@ -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

View File

@ -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)