Class: Cask::Download Private

Inherits:
Downloadable show all
Includes:
Context
Defined in:
cask/download.rb

Overview

This class is part of a private API. This class may only be used in the Homebrew/brew repository. Third parties should avoid using this class if possible, as it may be removed or changed without warning.

A download corresponding to a Cask.

Instance Attribute Summary collapse

Attributes inherited from Downloadable

#mirrors

Instance Method Summary collapse

Methods included from Context

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

Methods inherited from Downloadable

#cached_download, #clear_cache, #download_strategy, #downloaded?, #downloader, #freeze, #initialize_dup

Constructor Details

#initialize(cask, quarantine: nil) ⇒ Download

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 a new instance of Download.



16
17
18
19
20
21
# File 'cask/download.rb', line 16

def initialize(cask, quarantine: nil)
  super()

  @cask = cask
  @quarantine = quarantine
end

Instance Attribute Details

#caskObject (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.



14
15
16
# File 'cask/download.rb', line 14

def cask
  @cask
end

Instance Method Details

#basenameObject

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.



72
73
74
# File 'cask/download.rb', line 72

def basename
  downloader.basename
end

#checksum::Checksum?

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:



31
32
33
# File 'cask/download.rb', line 31

def checksum
  @checksum ||= cask.sha256 if cask.sha256 != :no_check
end

#download_nameString

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:



87
88
89
# File 'cask/download.rb', line 87

def download_name
  cask.token
end

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

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.

Parameters:

  • quiet (Boolean, nil) (defaults to: nil)
  • verify_download_integrity (Boolean) (defaults to: true)
  • timeout (Integer, Float, nil) (defaults to: nil)

Returns:



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'cask/download.rb', line 49

def fetch(quiet: nil, verify_download_integrity: true, timeout: nil)
  downloader.quiet! if quiet

  begin
    super(verify_download_integrity: false, timeout:)
  rescue DownloadError => e
    error = CaskError.new("Download failed on Cask '#{cask}' with message: #{e.cause}")
    error.set_backtrace e.backtrace
    raise error
  end

  downloaded_path = cached_download
  quarantine(downloaded_path)
  self.verify_download_integrity(downloaded_path) if verify_download_integrity
  downloaded_path
end

#time_file_size(timeout: nil) ⇒ Object

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.

Raises:

  • (ArgumentError)


66
67
68
69
70
# File 'cask/download.rb', line 66

def time_file_size(timeout: nil)
  raise ArgumentError, "not supported for this download strategy" unless downloader.is_a?(CurlDownloadStrategy)

  T.cast(downloader, CurlDownloadStrategy).resolved_time_file_size(timeout:)
end

#url::URL?

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:



24
25
26
27
28
# File 'cask/download.rb', line 24

def url
  return if cask.url.nil?

  @url ||= ::URL.new(cask.url.to_s, cask.url.specs)
end

#verify_download_integrity(filename) ⇒ void

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.

This method returns an undefined value.

Parameters:



77
78
79
80
81
82
83
84
# File 'cask/download.rb', line 77

def verify_download_integrity(filename)
  if @cask.sha256 == :no_check
    opoo "No checksum defined for cask '#{@cask}', skipping verification."
    return
  end

  super
end

#versionVersion?

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:



36
37
38
39
40
# File 'cask/download.rb', line 36

def version
  return if cask.version.nil?

  @version ||= Version.new(cask.version)
end