Class: Bottle

Inherits:
Object show all
Extended by:
Forwardable
Defined in:
software_spec.rb

Defined Under Namespace

Classes: Filename

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(formula, spec, tag = nil) ⇒ Bottle

Returns a new instance of Bottle.



339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
# File 'software_spec.rb', line 339

def initialize(formula, spec, tag = nil)
  @name = formula.name
  @resource = Resource.new
  @resource.owner = formula
  @spec = spec

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

  @tag = tag_spec.tag
  @cellar = tag_spec.cellar
  @rebuild = spec.rebuild

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

  @fetch_tab_retried = false

  root_url(spec.root_url, spec.root_url_specs)
end

Instance Attribute Details

#cellarObject (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 the value of attribute cellar.



334
335
336
# File 'software_spec.rb', line 334

def cellar
  @cellar
end

#nameObject (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 the value of attribute name.



334
335
336
# File 'software_spec.rb', line 334

def name
  @name
end

#rebuildObject (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 the value of attribute rebuild.



334
335
336
# File 'software_spec.rb', line 334

def rebuild
  @rebuild
end

#resourceObject (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 the value of attribute resource.



334
335
336
# File 'software_spec.rb', line 334

def resource
  @resource
end

#tagObject (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 the value of attribute tag.



334
335
336
# File 'software_spec.rb', line 334

def tag
  @tag
end

Instance Method Details

#clear_cacheObject



368
369
370
371
372
# File 'software_spec.rb', line 368

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

#compatible_locations?Boolean

Returns:

  • (Boolean)


374
375
376
# File 'software_spec.rb', line 374

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

#fetch(verify_download_integrity: true) ⇒ Object



359
360
361
362
363
364
365
366
# File 'software_spec.rb', line 359

def fetch(verify_download_integrity: true)
  @resource.fetch(verify_download_integrity:)
rescue DownloadError
  raise unless fallback_on_error

  fetch_tab
  retry
end

#fetch_tabObject



387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
# File 'software_spec.rb', line 387

def fetch_tab
  return if github_packages_manifest_resource.blank?

  # a checksum is used later identifying the correct tab but we do not have the checksum for the manifest/tab
  github_packages_manifest_resource.fetch(verify_download_integrity: false)

  begin
    github_packages_manifest_resource_tab(github_packages_manifest_resource)
  rescue RuntimeError => e
    raise DownloadError.new(github_packages_manifest_resource, e)
  end
rescue DownloadError
  raise unless fallback_on_error

  retry
rescue ArgumentError
  raise if @fetch_tab_retried

  @fetch_tab_retried = true
  github_packages_manifest_resource.clear_cache
  retry
end

#filenameFilename

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:



417
418
419
# File 'software_spec.rb', line 417

def filename
  Filename.create(resource.owner, @tag, @spec.rebuild)
end

#skip_relocation?Boolean

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.

Does the bottle need to be relocated?

Returns:

  • (Boolean)


379
380
381
# File 'software_spec.rb', line 379

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

#stageObject



383
384
385
# File 'software_spec.rb', line 383

def stage
  resource.downloader.stage
end

#tab_attributesObject



410
411
412
413
414
# File 'software_spec.rb', line 410

def tab_attributes
  return {} unless github_packages_manifest_resource&.downloaded?

  github_packages_manifest_resource_tab(github_packages_manifest_resource)
end