Spec-Zone.ru › Homebrew

Класс: Caveats Приватный

Наследует:
Object
  • Object
  • Caveats
показать все
Расширен модулем:
Forwardable
Определён в:
caveats.rb,
sorbet/rbi/dsl/caveats.rbi

Обзор

Этот класс является частью приватного API. Этот класс можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности не следует использовать этот класс, поскольку он может быть удалён или изменён без предупреждения.

Важные примечания к формуле.

Краткое описание атрибутов экземпляра свернуть

  • #formula ⇒ Formula только для чтения приватный

Краткое описание методов экземпляра свернуть

  • #caveats ⇒ String приватный
  • #completions_and_elisp ⇒ Array<String> приватный
  • #empty? ⇒ Boolean приватный
  • #initialize(formula) ⇒ void конструктор приватный
  • #keg_only_text(skip_reason: false) ⇒ String? приватный
  • #shadowed_path_text ⇒ String? приватный

Подробное описание конструкторов

#initialize(formula) ⇒ void

Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности не следует использовать этот метод, поскольку он может быть удалён или изменён без предупреждения.

Параметры:

  • formula (Formula)


14
15
16
17
18
# File 'caveats.rb', line 14

def initialize(formula)
  @formula = formula
  @caveats = T.let(nil, T.nilable(String))
  @completions_and_elisp = T.let(nil, T.nilable(T::Array[String]))
end

Подробное описание атрибутов экземпляра

#formula ⇒ Formula (только для чтения)

Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности не следует использовать этот метод, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Formula)


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

def formula
  @formula
end

Подробное описание методов экземпляра

#caveats ⇒ String

Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности не следует использовать этот метод, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (String)


21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'caveats.rb', line 21

def caveats
  @caveats ||= begin
    caveats = []
    build = formula.build
    begin
      formula.build = Tab.for_formula(formula)
      string = formula.caveats.to_s
      caveats << "#{string.chomp}\n" unless string.empty?
    ensure
      formula.build = build
    end
    caveats << keg_only_text
    caveats << shadowed_path_text
    caveats << service_caveats
    caveats.compact.join("\n")
  end
end

#completions_and_elisp ⇒ Array<String>

Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности не следует использовать этот метод, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Array<String>)


47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'caveats.rb', line 47

def completions_and_elisp
  @completions_and_elisp ||= begin
    valid_shells = [:bash, :zsh, :fish, :pwsh].freeze
    current_shell = Utils::Shell.preferred || Utils::Shell.parent
    shells = if current_shell.present? &&
                (shell_sym = current_shell.to_sym) &&
                valid_shells.include?(shell_sym)
      [shell_sym]
    else
      valid_shells
    end
    completions_and_elisp = shells.map do |shell|
      function_completion_caveats(shell)
    end
    completions_and_elisp << elisp_caveats
    completions_and_elisp.compact
  end
end

#empty? ⇒ Boolean

Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности не следует использовать этот метод, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Boolean)


40
41
42
# File 'caveats.rb', line 40

def empty?
  caveats.blank? && completions_and_elisp.blank?
end

#keg_only_text(skip_reason: false) ⇒ String?

Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности не следует использовать этот метод, поскольку он может быть удалён или изменён без предупреждения.

Параметры:

  • skip_reason (Boolean) (по умолчанию: false)

Возвращает:

  • (String, nil)


67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# File 'caveats.rb', line 67

def keg_only_text(skip_reason: false)
  return unless formula.keg_only?
  return if formula.linked?

  s = if skip_reason
    ""
  else
    <<~EOS
#{formula.name} is keg-only, which means it was not symlinked into #{HOMEBREW_PREFIX},
      because #{formula.keg_only_reason.to_s.chomp}.
    EOS
  end.dup

  if formula.bin.directory? || formula.sbin.directory?
    s << <<~EOS
      If you need to have #{formula.name} first in your PATH, run:
    EOS
    s << "#{Utils::Shell.prepend_path_in_profile(formula.opt_bin.to_s)}\n" if formula.bin.directory?
    s << "#{Utils::Shell.prepend_path_in_profile(formula.opt_sbin.to_s)}\n" if formula.sbin.directory?
  end

  if formula.lib.directory? || formula.include.directory?
    s << <<~EOS
      For compilers to find #{formula.name} you may need to set:
    EOS

    s << "#{Utils::Shell.export_value("LDFLAGS", "-L#{formula.opt_lib}")}\n" if formula.lib.directory?

    s << "#{Utils::Shell.export_value("CPPFLAGS", "-I#{formula.opt_include}")}\n" if formula.include.directory?

    if which("pkgconf", ORIGINAL_PATHS) &&
       ((formula.lib/"pkgconfig").directory? || (formula.share/"pkgconfig").directory?)
      s << <<~EOS
        For pkgconf to find #{formula.name} you may need to set:
      EOS

      if (formula.lib/"pkgconfig").directory?
        s << "#{Utils::Shell.export_value("PKG_CONFIG_PATH", "#{formula.opt_lib}/pkgconfig")}\n"
      end

      if (formula.share/"pkgconfig").directory?
        s << "#{Utils::Shell.export_value("PKG_CONFIG_PATH", "#{formula.opt_share}/pkgconfig")}\n"
      end
    end

    if which("cmake", ORIGINAL_PATHS) &&
       ((formula.lib/"cmake").directory? || (formula.share/"cmake").directory?)
      s << <<~EOS
        For cmake to find #{formula.name} you may need to set:
#{Utils::Shell.export_value("CMAKE_PREFIX_PATH", formula.opt_prefix.to_s)}      EOS
    end
  end
  s << "\n" unless s.end_with?("\n")
  s
end

#shadowed_path_text ⇒ String?

Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности не следует использовать этот метод, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (String, nil)


129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
# File 'caveats.rb', line 129

def shadowed_path_text
  return if Homebrew::EnvConfig.no_path_shadow_check?
  return unless formula.any_version_installed?

  shadowed = shadowed_executables
  shadowed = shadowed.select { |_, shadower| sibling_keg_name(shadower) } if formula.keg_only? && !formula.linked?
  return if shadowed.empty?

  sibling, external = shadowed.sort_by(&:first).partition { |_, shadower| sibling_keg_name(shadower) }
  blocks = []

  if external.any?
    lines = external.map { |name, shadower| "#{name} (shadowed by #{shadower})" }
    blocks << <<~EOS
      The following #{formula.name} executables are shadowed by other commands earlier in your PATH:
#{lines.join("\n")}      Running these by name will not invoke the version provided by Homebrew.
    EOS
  end

  if sibling.any?
    lines = sibling.map do |name, shadower|
      "#{name} (shadowed by #{shadower} from #{sibling_keg_name(shadower)})"
    end
    blocks << <<~EOS
      The following #{formula.name} executables are shadowed by other linked Homebrew commands:
#{lines.join("\n")}      Running these by name will not invoke the version provided by this formula.
      Run `brew link #{formula.name}` to switch the active version to this keg.
    EOS
  end

  s = blocks.join("\n").dup
  unless Homebrew::EnvConfig.no_env_hints?
    s << "Disable this behaviour by setting `HOMEBREW_NO_PATH_SHADOW_CHECK=1`.\n"
    s << "Hide these hints with `HOMEBREW_NO_ENV_HINTS=1` (see `man brew`).\n"
  end
  s
end

© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/rubydoc/Caveats.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API