aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/cmd/desc.rb
blob: 77078e8f5d520e8f9b18d8101f29912eba5a489c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
require "descriptions"
require "cmd/search"

module Homebrew
  def desc
    if ARGV.options_only.empty?
      if ARGV.named.empty?
        raise FormulaUnspecifiedError
        exit
      end
      results = Descriptions.named(ARGV.formulae.map(&:full_name))
    else
      if ARGV.options_only.count != 1
        odie "Pick one, and only one, of -s/--search, -n/--name, or -d/--description."
      end

      search_arg = ARGV.options_only.first

      search_type = case search_arg
        when '-s', '--search'
          :either
        when '-n', '--name'
          :name
        when '-d', '--description'
          :desc
        else
          odie "Unrecognized option '#{search_arg}'."
        end

      if arg = ARGV.named.first
        regex = Homebrew::query_regexp(arg)
        results = Descriptions.search(regex, search_type)
      else
        odie "You must provide a search term."
      end
    end

    results.print unless results.nil?
  end
end