Port Homebrew::Cmd::Desc

This commit is contained in:
Douglas Eichelberger 2024-03-29 18:15:31 -07:00
parent 84222ec006
commit 1fc4a93ca1
2 changed files with 59 additions and 57 deletions

View File

@ -1,17 +1,15 @@
# typed: true
# typed: strict
# frozen_string_literal: true
require "abstract_command"
require "descriptions"
require "search"
require "description_cache_store"
require "cli/parser"
module Homebrew
module_function
sig { returns(CLI::Parser) }
def desc_args
Homebrew::CLI::Parser.new do
module Cmd
class Desc < AbstractCommand
cmd_args do
description <<~EOS
Display <formula>'s name and one-line description.
The cache is created on the first search, making that search slower than subsequent ones.
@ -37,11 +35,9 @@ module Homebrew
named_args [:formula, :cask, :text_or_regex], min: 1
end
end
def desc
args = desc_args.parse
sig { override.void }
def run
if !args.eval_all? && !Homebrew::EnvConfig.eval_all?
raise UsageError, "`brew desc` needs `--eval-all` passed or `HOMEBREW_EVAL_ALL` set!"
end
@ -57,11 +53,14 @@ module Homebrew
if search_type.blank?
desc = {}
args.named.to_formulae_and_casks.each do |formula_or_cask|
if formula_or_cask.is_a? Formula
case formula_or_cask
when Formula
desc[formula_or_cask.full_name] = formula_or_cask.desc
else
when Cask::Cask
description = formula_or_cask.desc.presence || Formatter.warning("[no description]")
desc[formula_or_cask.full_name] = "(#{formula_or_cask.name.join(", ")}) #{description}"
else
raise TypeError, "Unsupported formula_or_cask type: #{formula_or_cask.class}"
end
end
Descriptions.new(desc).print
@ -72,3 +71,5 @@ module Homebrew
end
end
end
end
end

View File

@ -1,8 +1,9 @@
# frozen_string_literal: true
require "cmd/desc"
require "cmd/shared_examples/args_parse"
RSpec.describe "brew desc" do
RSpec.describe Homebrew::Cmd::Desc do
it_behaves_like "parseable arguments"
it "shows a given Formula's description", :integration_test do