Spec-Zone.ru › Homebrew

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

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

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

Определено в пространстве имён

Классы: Filename

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

  • #cellar ⇒ String, Symbol только для чтения приватный
  • #name ⇒ String только для чтения приватный
  • #rebuild ⇒ Integer только для чтения приватный
  • #resource ⇒ Resource только для чтения приватный
  • #tag ⇒ Utils::Bottles::Tag только для чтения приватный

Атрибуты, подключённые из Downloadable

#checksum, #mirrors, #phase

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

  • #bottle_size ⇒ Integer? закрытый
  • #cached_download(*args, &block) ⇒ T.untyped закрытый
  • #clear_cache ⇒ void закрытый
  • #compatible_locations? ⇒ Boolean закрытый
  • #download_queue_name ⇒ String закрытый
  • #download_queue_type ⇒ String закрытый
  • #downloaded_and_valid? ⇒ Boolean закрытый
  • #downloader(*args, &block) ⇒ T.untyped закрытый
  • #fetch(verify_download_integrity: true, timeout: nil, quiet: false) ⇒ Pathname закрытый
  • #fetch_tab(timeout: nil, quiet: false) ⇒ void закрытый
  • #filename ⇒ Filename закрытый
  • #github_packages_manifest_resource ⇒ Resource::BottleManifest? закрытый
  • #initialize(formula, spec, tag = nil, name: nil, pkg_version: nil) ⇒ void конструктор закрытый
  • #installed_size ⇒ Integer? закрытый
  • #path_exec_files ⇒ Array<String>? закрытый
  • #skip_relocation? ⇒ Boolean закрытый

    Нужно ли перемещать бутылку?

  • #stage ⇒ void закрытый
  • #tab_attributes ⇒ Hash{String => T.untyped} закрытый
  • #total_size ⇒ Integer? закрытый
  • #url(*args, &block) ⇒ T.untyped закрытый
  • #verify_download_integrity(*args, &block) ⇒ T.untyped закрытый

Методы, включённые из Downloadable

#download_queue_message, #download_strategy, #downloaded!, #downloaded?, #downloading!, #extracting!, #fetched_size, #freeze, #initialize_dup, #verified!, #verifying!, #version

Методы, включённые из Utils::Output::Mixin

#issue_reporting_message, #odebug, #odeprecated, #odie, #odisabled, #ofail, #oh1, #oh1_title, #ohai, #ohai_title, #onoe, #opoo, #opoo_outside_github_actions, #opoo_without_github_actions_annotation, #pretty_deprecated, #pretty_disabled, #pretty_duration, #pretty_install_status, #pretty_installed, #pretty_uninstalled, #pretty_upgradable, #pretty_warning

Методы, включённые из Context

current, current=, #debug?, #quiet?, #verbose?, #with_context

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

#initialize(formula, spec, tag = nil, name: nil, pkg_version: nil) ⇒ void

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

Параметры:

  • formula (Formula, nil)
  • spec (BottleSpecification)
  • tag (Utils::Bottles::Tag, nil) (по умолчанию: nil)
  • name (String, nil) (по умолчанию: nil)
  • pkg_version (PkgVersion, nil) (по умолчанию: nil)


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
127
# File 'bottle.rb', line 93

def initialize(formula, spec, tag = nil, name: nil, pkg_version: nil)
  super()

  resource_name = T.let(nil, T.nilable(String))
  if formula
    name = formula.name
    pkg_version = formula.pkg_version
  else
    raise ArgumentError, "Bottle name is required" if name.nil?
    raise ArgumentError, "Bottle version is required" if pkg_version.nil?

    resource_name = name
  end

  @name = T.let(name, String)
  @pkg_version = T.let(pkg_version, PkgVersion)
  @resource = T.let(Resource.new(resource_name), Resource)
  @resource.owner = formula if formula
  @spec = spec

  tag_spec = spec.tag_specification_for(Utils::Bottles.tag(tag))

  odie "#{@name} tag specification for tag #{tag} is nil" if tag_spec.nil?

  @tag = T.let(tag_spec.tag, Utils::Bottles::Tag)
  @cellar = T.let(tag_spec.cellar, T.any(String, Symbol))
  @rebuild = T.let(spec.rebuild, Integer)

  @resource.version(@pkg_version.to_s)
  @resource.checksum = tag_spec.checksum

  @fetch_tab_retried = T.let(false, T::Boolean)

  root_url(spec.root_url, spec.root_url_specs)
end

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

#cellar ⇒ String, Symbol (только для чтения)

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

Возвращает:

  • (String, Symbol)


76
77
78
# File 'bottle.rb', line 76

def cellar
  @cellar
end

#name ⇒ String (только для чтения)

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

Возвращает:

  • (String)


67
68
69
# File 'bottle.rb', line 67

def name
  @name
end

#rebuild ⇒ Integer (только для чтения)

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

Возвращает:

  • (Integer)


79
80
81
# File 'bottle.rb', line 79

def rebuild
  @rebuild
end

#resource ⇒ Resource (только для чтения)

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

Возвращает:

  • (Resource)


70
71
72
# File 'bottle.rb', line 70

def resource
  @resource
end

#tag ⇒ Utils::Bottles::Tag (только для чтения)

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

Возвращает:

  • (Utils::Bottles::Tag)


73
74
75
# File 'bottle.rb', line 73

def tag
  @tag
end

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

#bottle_size ⇒ Integer?

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

Возвращает:

  • (Integer, nil)


216
217
218
219
220
221
# File 'bottle.rb', line 216

def bottle_size
  resource = github_packages_manifest_resource
  return unless resource&.downloaded?

  resource.bottle_size
end

#cached_download(*args, &block) ⇒ T.untyped

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

Параметры:

  • args (T.untyped)
  • block (T.untyped)

Возвращает:

  • (T.untyped)


10
# File 'sorbet/rbi/dsl/bottle.rbi', line 10

def cached_download(*args, &block); end

#clear_cache ⇒ void

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

Этот метод не возвращает определённого значения.



165
166
167
168
169
# File 'bottle.rb', line 165

def clear_cache
  @resource.clear_cache
  github_packages_manifest_resource&.clear_cache
  @fetch_tab_retried = false
end

#compatible_locations? ⇒ Boolean

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

Возвращает:

  • (Boolean)


172
173
174
# File 'bottle.rb', line 172

def compatible_locations?
  @spec.compatible_locations?(tag: @tag)
end

#download_queue_name ⇒ String

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

Возвращает:

  • (String)


275
# File 'bottle.rb', line 275

def download_queue_name = "#{name} (#{resource.version})"

#download_queue_type ⇒ String

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

Возвращает:

  • (String)


272
# File 'bottle.rb', line 272

def download_queue_type = "Bottle"

#downloaded_and_valid? ⇒ Boolean

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

Возвращает:

  • (Boolean)


146
147
148
149
150
151
152
153
154
155
156
157
# File 'bottle.rb', line 146

def downloaded_and_valid?
  return false unless cached_download.file?

  resource_checksum = resource.checksum
  return false if resource_checksum.nil?

  downloader = resource.downloader
  return false unless downloader.is_a?(CurlGitHubPackagesDownloadStrategy)
  return false unless downloader.immutable_bottle_blob?

  downloader.bottle_blob_sha256 == resource_checksum.hexdigest
end

#downloader(*args, &block) ⇒ T.untyped

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

Параметры:

  • args (T.untyped)
  • block (T.untyped)

Возвращает:

  • (T.untyped)


13
# File 'sorbet/rbi/dsl/bottle.rbi', line 13

def downloader(*args, &block); end

#fetch(verify_download_integrity: true, timeout: nil, quiet: false) ⇒ Pathname

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

Параметры:

  • verify_download_integrity (Boolean) (по умолчанию: true)
  • timeout (Integer, Float, nil) (по умолчанию: nil)
  • quiet (Boolean) (по умолчанию: false)

Возвращает:

  • (Pathname)


136
137
138
139
140
141
142
143
# File 'bottle.rb', line 136

def fetch(verify_download_integrity: true, timeout: nil, quiet: false)
  resource.fetch(verify_download_integrity:, timeout:, quiet:)
rescue DownloadError
  raise unless fallback_on_error?

  fetch_tab
  retry
end

#fetch_tab(timeout: nil, quiet: false) ⇒ void

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

Этот метод возвращает неопределённое значение.

Параметры:

  • timeout (Integer, Float, nil) (по умолчанию: nil)
  • quiet (Boolean) (по умолчанию: false)


188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
# File 'bottle.rb', line 188

def fetch_tab(timeout: nil, quiet: false)
  return unless (resource = github_packages_manifest_resource)

  begin
    resource.fetch(timeout:, quiet:)
  rescue DownloadError
    raise unless fallback_on_error?

    retry
  rescue Resource::BottleManifest::Error
    raise if @fetch_tab_retried

    @fetch_tab_retried = true
    resource.clear_cache
    retry
  end
end

#filename ⇒ Filename

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

Возвращает:

  • (Filename)


240
# File 'bottle.rb', line 240

def filename = Filename.new(@name, @pkg_version, @tag, @spec.rebuild)

#github_packages_manifest_resource ⇒ Resource::BottleManifest?

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

Возвращает:

  • (Resource::BottleManifest, nil)


243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
# File 'bottle.rb', line 243

def github_packages_manifest_resource
  return if @resource.download_strategy != CurlGitHubPackagesDownloadStrategy

  @github_packages_manifest_resource ||= T.let(
    begin
      resource = Resource::BottleManifest.new(self)

      resource_version = @resource.version
      odie "resource version is nil" if resource_version.nil?

      version_rebuild = GitHubPackages.version_rebuild(resource_version, rebuild)
      resource.version(version_rebuild)

      image_name = GitHubPackages.image_formula_name(@name)
      image_tag = GitHubPackages.image_version_rebuild(version_rebuild)
      resource.url(
        "#{root_url}/#{image_name}/manifests/#{image_tag}",
        using:   CurlGitHubPackagesDownloadStrategy,
        headers: ["Accept: application/vnd.oci.image.index.v1+json"],
      )
      T.cast(resource.downloader, CurlGitHubPackagesDownloadStrategy).resolved_basename =
        "#{name}-#{version_rebuild}.bottle_manifest.json"
      resource
    end,
    T.nilable(Resource::BottleManifest),
  )
end

#installed_size ⇒ Integer?

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

Возвращает:

  • (Integer, nil)


224
225
226
227
228
229
# File 'bottle.rb', line 224

def installed_size
  resource = github_packages_manifest_resource
  return unless resource&.downloaded?

  resource.installed_size
end

#path_exec_files ⇒ Array<String>?

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

Возвращает:

  • (Array<String>, nil)


232
233
234
235
236
237
# File 'bottle.rb', line 232

def path_exec_files
  resource = github_packages_manifest_resource
  return unless resource&.downloaded?

  resource.path_exec_files
end

#skip_relocation? ⇒ Boolean

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

Требуется ли перемещать бутылку?

Возвращает:

  • (Boolean)


178
179
180
181
182
# File 'bottle.rb', line 178

def skip_relocation?
  attrs = tab_attributes
  tab = Tab.new(attrs) unless attrs.empty?
  @spec.skip_relocation?(tag: @tag, tab:)
end

#stage ⇒ void

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

Этот метод возвращает неопределённое значение.



185
# File 'bottle.rb', line 185

def stage = downloader.stage

#tab_attributes ⇒ Hash{String => T.untyped}

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

Возвращает:

  • (Hash{String => T.untyped})


207
208
209
210
211
212
213
# File 'bottle.rb', line 207

def tab_attributes
  if (resource = github_packages_manifest_resource) && resource.downloaded?
    return resource.tab
  end

  {}
end

#total_size ⇒ Integer?

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

Возвращает:

  • (Integer, nil)


160
161
162
# File 'bottle.rb', line 160

def total_size
  bottle_size || super
end

#url(*args, &block) ⇒ T.untyped

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

Параметры:

  • args (T.untyped)
  • block (T.untyped)

Возвращает:

  • (T.untyped)


16
# File 'sorbet/rbi/dsl/bottle.rbi', line 16

def url(*args, &block); end

#verify_download_integrity(*args, &block) ⇒ T.untyped

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

Параметры:

  • args (T.untyped)
  • block (T.untyped)

Возвращает:

  • (T.untyped)


19
# File 'sorbet/rbi/dsl/bottle.rbi', line 19

def verify_download_integrity(*args, &block); end

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

Spec-Zone.ru

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