Класс: Tab Закрытый
- Наследует:
- AbstractTab
- Object
- AbstractTab
- Tab
- Определён в:
- tab/tab.rb
Этот класс является частью закрытого API. Этот класс можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам не следует использовать этот класс, так как он может быть удалён или изменён без предупреждения.
Сводка констант свернуть
- Cache =
Эта константа является частью закрытого API. Эту константу можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам не следует использовать эту константу, так как она может быть удалена или изменена без предупреждения.
type_template { { fixed: T::Hash[T.any(Pathname, String), T.untyped] } }
Константы, унаследованные от AbstractTab
AbstractTab::FILENAME, AbstractTab::RuntimeDependencies
Сводка атрибутов экземпляра свернуть
- #aliases ⇒ Array<String>? закрытый
- #built_as_bottle ⇒ Boolean? закрытый
- #changed_files ⇒ Array<Pathname>? закрытый
- #compiler ⇒ String, Symbol закрытый
- #poured_from_bottle ⇒ Boolean? внутренний
Проверяет, была ли формула установлена из бутылки.
- #source_modified_time ⇒ Time закрытый
- #stdlib ⇒ String, ... закрытый
- #tapped_from ⇒ String? только для чтения закрытый
- #unused_options ⇒ Options закрытый
- #used_options ⇒ Options внутренний
Параметры, использованные для установки формулы.
Атрибуты, унаследованные от AbstractTab
#arch, #built_on, #homebrew_version, #installed_on_request, #loaded_from_api, #loaded_from_internal_api, #source, #tabfile, #time
Сводка методов класса свернуть
- .create(formula_or_cask, compiler = DevelopmentTools.default_compiler, stdlib = nil) ⇒ T.attached_class закрытый
Создаёт экземпляр Tab для новой установки формулы.
- .empty ⇒ T.attached_class закрытый
- .for_formula(formula) ⇒ T.attached_class закрытый
Возвращает Tab для уже установленной формулы или фиктивный объект, если формула не установлена.
- .for_keg(keg) ⇒ T.attached_class внутренний
- .for_name(name) ⇒ T.attached_class закрытый
Возвращает Tab для установки формулы с указанным именем или фиктивный объект, если формула не установлена.
- .from_file_content(content, path) ⇒ T.attached_class закрытый
Как AbstractTab.from_file, но без использования кэша.
- .remap_deprecated_options(deprecated_options, options) ⇒ Options закрытый
- .runtime_deps_hash(formula, deps) ⇒ Array<Hash{String => T.untyped}> закрытый
Краткое описание методов экземпляра свернуть
- #any_args_or_options? ⇒ Boolean приватный
- #bottle? ⇒ Boolean приватный
- #built_bottle? ⇒ Boolean приватный
- #cxxstdlib ⇒ CxxStdlib приватный
- #head? ⇒ Boolean приватный
- #head_version ⇒ Version? приватный
- #include?(opt) ⇒ Boolean приватный
- #initialize(attributes = {}) ⇒ void конструктор приватный
- #runtime_dependencies ⇒ RuntimeDependencies приватный
- #spec ⇒ Symbol приватный
- #stable? ⇒ Boolean приватный
- #stable_version ⇒ Version? приватный
- #to_bottle_hash ⇒ Hash{String => T.untyped} приватный
Подмножество to_json, необходимое для бутылок.
- #to_json(options = nil) ⇒ String приватный
- #version_scheme ⇒ Integer приватный
- #versions ⇒ Hash{String => T.untyped} приватный
- #with?(val) ⇒ Boolean приватный
- #without?(val) ⇒ Boolean приватный
- #write ⇒ void приватный
Методы, унаследованные от AbstractTab
from_file, #installed_on_request_present?, #parsed_homebrew_version, #tap, #tap=
Методы, включённые из Cachable
Подробное описание конструкторов
#initialize(attributes = {}) ⇒ void
Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим сторонам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
44 45 46 47 48 49 50 51 52 53 54 55 56 57 | # File 'tab/tab.rb', line 44 def initialize(attributes = {}) @poured_from_bottle = T.let(nil, T.nilable(T::Boolean)) @built_as_bottle = T.let(nil, T.nilable(T::Boolean)) @changed_files = T.let(nil, T.nilable(T::Array[Pathname])) @stdlib = T.let(nil, T.nilable(T.any(String, Symbol))) @aliases = T.let(nil, T.nilable(T::Array[String])) @used_options = T.let(nil, T.nilable(T::Array[String])) @unused_options = T.let(nil, T.nilable(T::Array[String])) @compiler = T.let(nil, T.nilable(T.any(String, Symbol))) @source_modified_time = T.let(nil, T.nilable(Integer)) @tapped_from = T.let(nil, T.nilable(String)) super end |
Подробное описание атрибутов экземпляра
#aliases ⇒ Array<String>?
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
23 24 25 | # File 'tab/tab.rb', line 23 def aliases @aliases end |
#built_as_bottle ⇒ Boolean?
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
17 18 19 | # File 'tab/tab.rb', line 17 def built_as_bottle @built_as_bottle end |
#changed_files ⇒ Array<Pathname>?
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
41 42 43 | # File 'tab/tab.rb', line 41 def changed_files @changed_files end |
#compiler ⇒ String, Symbol
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
298 299 300 | # File 'tab/tab.rb', line 298 def compiler @compiler || DevelopmentTools.default_compiler end |
#poured_from_bottle ⇒ Boolean?
Этот метод является частью внутреннего API. Этот метод можно использовать только внутри репозиториев, принадлежащих Homebrew, за исключением cask и формул. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Проверяет, была ли формула установлена из бутылки.
14 15 16 | # File 'tab/tab.rb', line 14 def poured_from_bottle @poured_from_bottle end |
#source_modified_time ⇒ Time
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
352 353 354 | # File 'tab/tab.rb', line 352 def source_modified_time Time.at(@source_modified_time || 0) end |
#stdlib ⇒ String, ...
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
20 21 22 | # File 'tab/tab.rb', line 20 def stdlib @stdlib end |
#tapped_from ⇒ String? (только чтение)
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
38 39 40 | # File 'tab/tab.rb', line 38 def tapped_from @tapped_from end |
#unused_options ⇒ Options
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
293 294 295 | # File 'tab/tab.rb', line 293 def Options.create(@unused_options) end |
#used_options ⇒ Options
Этот метод является частью внутреннего API. Этот метод можно использовать только внутри репозиториев, принадлежащих Homebrew, за исключением кэсков или формул. Сторонним разработчикам по возможности следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
Параметры, использованные для установки формулы.
288 289 290 | # File 'tab/tab.rb', line 288 def Options.create(@used_options) end |
Подробное описание методов класса
.create(formula_or_cask, compiler = DevelopmentTools.default_compiler, stdlib = nil) ⇒ T.attached_class
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Создаёт экземпляр Tab для новой установки формулы.
64 65 66 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 | # File 'tab/tab.rb', line 64 def self.create(formula_or_cask, compiler = DevelopmentTools.default_compiler, stdlib = nil) formula = T.cast(formula_or_cask, Formula) tab = super(formula) build = formula.build runtime_deps = formula.runtime_dependencies(undeclared: false) tab. = build..as_flags tab. = build..as_flags tab.tabfile = formula.prefix/FILENAME tab.built_as_bottle = build.bottle? tab.poured_from_bottle = false tab.source_modified_time = formula.source_modified_time.to_i tab.compiler = compiler tab.stdlib = stdlib tab.aliases = formula.aliases tab.runtime_dependencies = Tab.runtime_deps_hash(formula, runtime_deps) active_spec = if formula.active_spec_sym == :head T.must(formula.head) else T.must(formula.stable) end tab.source["spec"] = formula.active_spec_sym.to_s tab.source["path"] = formula.specified_path.to_s if (downloader = active_spec.downloader).cached_location.exist? && (scm_revision = downloader.source_revision).present? tab.source["scm_revision"] = scm_revision end tab.source["versions"] = { "stable" => formula.stable&.version&.to_s, "head" => formula.head&.version&.to_s, "version_scheme" => formula.version_scheme, "compatibility_version" => formula.compatibility_version, } tab end |
.empty ⇒ T.attached_class
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 | # File 'tab/tab.rb', line 215 def self.empty tab = super tab. = [] tab. = [] tab.built_as_bottle = false tab.poured_from_bottle = false tab.source_modified_time = 0 tab.stdlib = nil tab.compiler = DevelopmentTools.default_compiler tab.aliases = [] tab.source["spec"] = "stable" tab.source["versions"] = empty_source_versions tab end |
.for_formula(formula) ⇒ T.attached_class
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Возвращает Tab для уже установленной формулы или фиктивный объект, если формула не установлена.
175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 | # File 'tab/tab.rb', line 175 def self.for_formula(formula) paths = [] paths << formula.opt_prefix.resolved_path if formula.opt_prefix.symlink? && formula.opt_prefix.directory? paths << formula.linked_keg.resolved_path if formula.linked_keg.symlink? && formula.linked_keg.directory? if (dirs = formula.installed_prefixes).length == 1 paths << dirs.first end paths << formula.latest_installed_prefix path = paths.map { |pathname| pathname/FILENAME }.find(&:file?) if path tab = from_file(path) = (formula., tab.) tab. = .as_flags else # Formula is not installed. Return a fake tab. tab = empty tab. = formula..as_flags tab.source = { "path" => formula.specified_path.to_s, "tap" => formula.tap&.name, "tap_git_head" => formula.tap_git_head, "spec" => formula.active_spec_sym.to_s, "versions" => { "stable" => formula.stable&.version&.to_s, "head" => formula.head&.version&.to_s, "version_scheme" => formula.version_scheme, }, } end tab end |
.for_keg(keg) ⇒ T.attached_class
Этот метод является частью внутреннего API. Этот метод можно использовать только внутри репозиториев, принадлежащих Homebrew, за исключением рецептов cask или формул. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Получает Tab для указанного Keg или фиктивный объект, если формула не установлена.
135 136 137 138 139 140 141 142 143 144 145 146 | # File 'tab/tab.rb', line 135 def self.for_keg(keg) path = keg/FILENAME tab = if path.exist? from_file(path) else empty end tab.tabfile = path tab end |
.for_name(name) ⇒ T.attached_class
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Возвращает Tab для установки формулы с указанным именем или фиктивный объект, если формула не установлена.
151 152 153 154 155 156 157 158 | # File 'tab/tab.rb', line 151 def self.for_name(name) rack = HOMEBREW_CELLAR/name if (keg = Keg.from_rack(rack)) for_keg(keg) else for_formula(Formulary.from_rack(rack, keg:)) end end |
.from_file_content(content, path) ⇒ T.attached_class
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Если возможно, третьим лицам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Как AbstractTab.from_file, но без использования кэша.
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | # File 'tab/tab.rb', line 105 def self.from_file_content(content, path) tab = super tab.tap = tab.tapped_from if !tab.tapped_from.nil? && tab.tapped_from != "path or URL" tab.tap = "homebrew/core" if ["mxcl/master", "Homebrew/homebrew"].include?(tab.tap) if tab.source["spec"].nil? version = PkgVersion.parse(File.basename(File.dirname(path))) tab.source["spec"] = if version.head? "head" else "stable" end end tab.source["versions"] ||= empty_source_versions # Tabs created with Homebrew 1.5.13 through 4.0.17 inclusive created empty string versions in some cases. ["stable", "head"].each do |spec| tab.source["versions"][spec] = tab.source["versions"][spec].presence end tab end |
.remap_deprecated_options(deprecated_options, options) ⇒ Options
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Если возможно, третьим лицам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
161 162 163 164 165 166 167 168 169 170 | # File 'tab/tab.rb', line 161 def self.(, ) .each do |deprecated_option| option = .find { |o| o.name == deprecated_option.old } next unless option -= [option] << Option.new(deprecated_option.current, option.description) end end |
.runtime_deps_hash(formula, deps) ⇒ Array<Hash{String => T.untyped}>
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Если возможно, третьим лицам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
244 245 246 247 248 | # File 'tab/tab.rb', line 244 def self.runtime_deps_hash(formula, deps) deps.map do |dep| formula_to_dep_hash(dep.to_formula, formula.deps.map(&:name)) end end |
Подробное описание методов экземпляра
#any_args_or_options? ⇒ Boolean
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
251 252 253 | # File 'tab/tab.rb', line 251 def !.empty? || !.empty? end |
#bottle? ⇒ Boolean
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
322 323 324 | # File 'tab/tab.rb', line 322 def bottle? !!built_as_bottle end |
#built_bottle? ⇒ Boolean
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
317 318 319 | # File 'tab/tab.rb', line 317 def built_bottle? !!built_as_bottle && !poured_from_bottle end |
#cxxstdlib ⇒ CxxStdlib
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
310 311 312 313 314 | # File 'tab/tab.rb', line 310 def cxxstdlib # Older tabs won't have these values, so provide sensible defaults lib = stdlib&.to_sym CxxStdlib.create(lib, compiler.to_sym) end |
#head? ⇒ Boolean
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
275 276 277 | # File 'tab/tab.rb', line 275 def head? spec == :head end |
#head_version ⇒ Version?
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
342 343 344 | # File 'tab/tab.rb', line 342 def head_version versions["head"]&.then { Version.new(it) } end |
#include?(opt) ⇒ Boolean
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
270 271 272 | # File 'tab/tab.rb', line 270 def include?(opt) .include? opt end |
#runtime_dependencies ⇒ RuntimeDependencies
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
303 304 305 306 307 | # File 'tab/tab.rb', line 303 def runtime_dependencies # Homebrew versions prior to 1.1.6 generated incorrect runtime dependency # lists. @runtime_dependencies if parsed_homebrew_version >= "1.1.6" end |
#spec ⇒ Symbol
Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
327 328 329 | # File 'tab/tab.rb', line 327 def spec source["spec"].to_sym end |
#stable? ⇒ Boolean
Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
280 281 282 | # File 'tab/tab.rb', line 280 def stable? spec == :stable end |
#stable_version ⇒ Version?
Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
337 338 339 | # File 'tab/tab.rb', line 337 def stable_version versions["stable"]&.then { Version.new(it) } end |
#to_bottle_hash ⇒ Hash{String => T.untyped}
Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Подмножество to_json, используемое для бутылок.
385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 | # File 'tab/tab.rb', line 385 def to_bottle_hash attributes = { "homebrew_version" => homebrew_version, "changed_files" => changed_files&.map(&:to_s), "source_modified_time" => source_modified_time.to_i, "stdlib" => stdlib&.to_s, "compiler" => compiler.to_s, "runtime_dependencies" => runtime_dependencies, "source" => source.slice("scm_revision").compact.presence, "arch" => arch, "built_on" => built_on, } attributes.delete("stdlib") if attributes["stdlib"].blank? attributes.delete("source") if attributes["source"].blank? attributes end |
#to_json(options = nil) ⇒ String
Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 | # File 'tab/tab.rb', line 357 def to_json( = nil) attributes = { "homebrew_version" => homebrew_version, "used_options" => .as_flags, "unused_options" => .as_flags, "built_as_bottle" => built_as_bottle, "poured_from_bottle" => poured_from_bottle, "loaded_from_api" => loaded_from_api, "loaded_from_internal_api" => loaded_from_internal_api, "installed_on_request" => installed_on_request, "changed_files" => changed_files&.map(&:to_s), "time" => time, "source_modified_time" => source_modified_time.to_i, "stdlib" => stdlib&.to_s, "compiler" => compiler.to_s, "aliases" => aliases, "runtime_dependencies" => runtime_dependencies, "source" => source, "arch" => arch, "built_on" => built_on, } attributes.delete("stdlib") if attributes["stdlib"].blank? JSON.pretty_generate(attributes, ) end |
#version_scheme ⇒ Integer
Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
347 348 349 | # File 'tab/tab.rb', line 347 def version_scheme versions["version_scheme"] || 0 end |
#versions ⇒ Hash{String => T.untyped}
Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
332 333 334 | # File 'tab/tab.rb', line 332 def versions source["versions"] end |
#with?(val) ⇒ Boolean
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим сторонам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
256 257 258 259 260 261 262 | # File 'tab/tab.rb', line 256 def with?(val) option_names = val.is_a?(String) ? [val] : val.option_names option_names.any? do |name| include?("with-#{name}") || .include?("without-#{name}") end end |
#without?(val) ⇒ Boolean
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим сторонам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
265 266 267 | # File 'tab/tab.rb', line 265 def without?(val) !with?(val) end |
#write ⇒ void
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим сторонам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Этот метод возвращает неопределённое значение.
403 404 405 406 407 408 409 | # File 'tab/tab.rb', line 403 def write # If this is a new installation, the cache of installed formulae # will no longer be valid. Formula.clear_cache unless tabfile&.exist? super end |
© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/rubydoc/Tab.html