Class: Descriptions Private

Inherits:
Object show all
Defined in:
descriptions.rb

Overview

This class is part of a private API. This class may only be used in the Homebrew/brew repository. Third parties should avoid using this class if possible, as it may be removed or changed without warning.

Helper class for printing and searching descriptions.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(descriptions) ⇒ Descriptions

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Create an actual instance.



28
29
30
# File 'descriptions.rb', line 28

def initialize(descriptions)
  @descriptions = descriptions
end

Class Method Details

.search(string_or_regex, field, cache_store, eval_all = Homebrew::EnvConfig.eval_all?, cache_store_hash: false) ⇒ Object

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Given a regex, find all formulae whose specified fields contain a match.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'descriptions.rb', line 11

def self.search(string_or_regex, field, cache_store,
                eval_all = Homebrew::EnvConfig.eval_all?, cache_store_hash: false)
  cache_store.populate_if_empty!(eval_all:) unless cache_store_hash

  results = case field
  when :name
    Homebrew::Search.search(cache_store, string_or_regex) { |name, _| name }
  when :desc
    Homebrew::Search.search(cache_store, string_or_regex) { |_, desc| desc }
  when :either
    Homebrew::Search.search(cache_store, string_or_regex)
  end

  new(results)
end

Instance Method Details

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Take search results -- a hash mapping formula names to descriptions -- and print them.



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'descriptions.rb', line 34

def print
  blank = Formatter.warning("[no description]")
  @descriptions.keys.sort.each do |full_name|
    short_name = short_names[full_name]
    printed_name = if short_name_counts[short_name] == 1
      short_name
    else
      full_name
    end
    description = @descriptions[full_name] || blank
    if description.is_a?(Array)
      names = description[0]
      description = description[1] || blank
      puts "#{Tty.bold}#{printed_name}:#{Tty.reset} (#{names}) #{description}"
    else
      puts "#{Tty.bold}#{printed_name}:#{Tty.reset} #{description}"
    end
  end
end