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.



344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
# File 'software_spec.rb', line 344

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.



339
340
341
# File 'software_spec.rb', line 339

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.



339
340
341
# File 'software_spec.rb', line 339

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.



339
340
341
# File 'software_spec.rb', line 339

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.



339
340
341
# File 'software_spec.rb', line 339

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.



339
340
341
# File 'software_spec.rb', line 339

def tag
  @tag
end

Instance Method Details

#clear_cacheObject



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

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

#compatible_locations?Boolean

Returns:

  • (Boolean)


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

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

#fetch(verify_download_integrity: true) ⇒ Object



364
365
366
367
368
369
370
371
# File 'software_spec.rb', line 364

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

  fetch_tab
  retry
end

#fetch_tabObject



392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
# File 'software_spec.rb', line 392

def fetch_tab
  return if github_packages_manifest_resource.blank?

  github_packages_manifest_resource.fetch
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:



415
416
417
# File 'software_spec.rb', line 415

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)


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

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

#stageObject



388
389
390
# File 'software_spec.rb', line 388

def stage
  resource.downloader.stage
end

#tab_attributesObject



408
409
410
411
412
# File 'software_spec.rb', line 408

def tab_attributes
  return {} unless github_packages_manifest_resource&.downloaded?

  github_packages_manifest_resource.tab
end