Class: Messages Private

Inherits:
Object show all
Defined in:
messages.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.

A Messages object collects messages that may need to be displayed together at the end of a multi-step brew command run.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializevoid

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.



17
18
19
20
21
22
# File 'messages.rb', line 17

def initialize
  @caveats = T.let([], T::Array[T::Hash[Symbol, Symbol]])
  @completions_and_elisp = T.let(Set.new, T::Set[String])
  @package_count = T.let(0, Integer)
  @install_times = T.let([], T::Array[T::Hash[String, Float]])
end

Instance Attribute Details

#caveatsArray<Hash{Symbol => Symbol}> (readonly)

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.

Returns:



8
9
10
# File 'messages.rb', line 8

def caveats
  @caveats
end

#install_timesArray<Hash{String => Float}> (readonly)

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.

Returns:



14
15
16
# File 'messages.rb', line 14

def install_times
  @install_times
end

#package_countInteger (readonly)

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.

Returns:

  • (Integer)


11
12
13
# File 'messages.rb', line 11

def package_count
  @package_count
end

Instance Method Details

#display_caveats(force: false) ⇒ void

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.

This method returns an undefined value.

Parameters:

  • force (Boolean) (defaults to: false)


47
48
49
50
51
52
53
54
55
56
57
# File 'messages.rb', line 47

def display_caveats(force: false)
  return if @package_count.zero?
  return if @caveats.empty? && @completions_and_elisp.empty?

  oh1 "Caveats" unless @completions_and_elisp.empty?
  @completions_and_elisp.each { |c| puts c }
  return if @package_count == 1 && !force

  oh1 "Caveats" if @completions_and_elisp.empty?
  @caveats.each { |c| ohai c[:package], c[:caveats] }
end

#display_install_timesvoid

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.

This method returns an undefined value.



60
61
62
63
64
65
66
67
# File 'messages.rb', line 60

def display_install_times
  return if install_times.empty?

  oh1 "Installation times"
  install_times.each do |t|
    puts format("%<package>-20s %<time>10.3f s", t)
  end
end

#display_messages(force_caveats: false, display_times: false) ⇒ void

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.

This method returns an undefined value.

Parameters:

  • force_caveats (Boolean) (defaults to: false)
  • display_times (Boolean) (defaults to: false)


41
42
43
44
# File 'messages.rb', line 41

def display_messages(force_caveats: false, display_times: false)
  display_caveats(force: force_caveats)
  display_install_times if display_times
end

#package_installed(package, elapsed_time) ⇒ void

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.

This method returns an undefined value.

Parameters:

  • package (String)
  • elapsed_time (Float)


35
36
37
38
# File 'messages.rb', line 35

def package_installed(package, elapsed_time)
  @package_count += 1
  @install_times.push(package:, time: elapsed_time)
end

#record_caveats(package, caveats) ⇒ void

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.

This method returns an undefined value.

Parameters:



25
26
27
# File 'messages.rb', line 25

def record_caveats(package, caveats)
  @caveats.push(package:, caveats:)
end

#record_completions_and_elisp(completions_and_elisp) ⇒ void

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.

This method returns an undefined value.

Parameters:



30
31
32
# File 'messages.rb', line 30

def record_completions_and_elisp(completions_and_elisp)
  @completions_and_elisp.merge(completions_and_elisp)
end