Класс: 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. Сторонним разработчикам по возможности не следует использовать этот метод, поскольку он может быть удалён или изменён без предупреждения.
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. Сторонним разработчикам по возможности не следует использовать этот метод, поскольку он может быть удалён или изменён без предупреждения.
11 12 13 | # File 'caveats.rb', line 11 def formula @formula end |
Подробное описание методов экземпляра
#caveats ⇒ String
Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности не следует использовать этот метод, поскольку он может быть удалён или изменён без предупреждения.
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. Сторонним разработчикам по возможности не следует использовать этот метод, поскольку он может быть удалён или изменён без предупреждения.
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. Сторонним разработчикам по возможности не следует использовать этот метод, поскольку он может быть удалён или изменён без предупреждения.
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. Сторонним разработчикам по возможности не следует использовать этот метод, поскольку он может быть удалён или изменён без предупреждения.
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. Сторонним разработчикам по возможности не следует использовать этот метод, поскольку он может быть удалён или изменён без предупреждения.
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