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.



348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
# File 'software_spec.rb', line 348

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)

Returns the value of attribute cellar.



343
344
345
# File 'software_spec.rb', line 343

def cellar
  @cellar
end

#nameObject (readonly)

Returns the value of attribute name.



343
344
345
# File 'software_spec.rb', line 343

def name
  @name
end

#rebuildObject (readonly)

Returns the value of attribute rebuild.



343
344
345
# File 'software_spec.rb', line 343

def rebuild
  @rebuild
end

#resourceObject (readonly)

Returns the value of attribute resource.



343
344
345
# File 'software_spec.rb', line 343

def resource
  @resource
end

Instance Method Details

#clear_cacheObject



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

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

#compatible_locations?Boolean

Returns:

  • (Boolean)


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

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

#fetch(verify_download_integrity: true) ⇒ Object



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

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

  fetch_tab
  retry
end

#fetch_tabObject



396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
# File 'software_spec.rb', line 396

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

#skip_relocation?Boolean

Does the bottle need to be relocated?

Returns:

  • (Boolean)


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

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

#stageObject



392
393
394
# File 'software_spec.rb', line 392

def stage
  resource.downloader.stage
end

#tab_attributesObject



419
420
421
422
423
# File 'software_spec.rb', line 419

def tab_attributes
  return {} unless github_packages_manifest_resource&.downloaded?

  github_packages_manifest_resource_tab(github_packages_manifest_resource)
end