Spec-Zone.ru › Homebrew

Модуль: Downloadable Абстрактный

Расширяется:
T::Helpers
Включает:
Context, Utils::Output::Mixin
Включён в:
Bottle, Cask::Download, Homebrew::API::JSONDownload, Homebrew::API::SourceDownload, Homebrew::RetryableDownload, Resource, SoftwareSpec
Определён в:
downloadable.rb

Обзор

Этот модуль является абстрактным.

Подклассы должны реализовать перечисленные ниже методы abstract.

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

  • #checksum ⇒ Checksum? только для чтения приватный
  • #mirrors ⇒ Array<String> только для чтения приватный
  • #phase ⇒ Symbol приватный
  • #url ⇒ String, ... только для чтения приватный

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

  • #cached_download ⇒ Pathname приватный
  • #clear_cache ⇒ void приватный
  • #download_queue_message ⇒ String приватный
  • #download_queue_name ⇒ String приватный
  • #download_queue_type ⇒ String абстрактный приватный
  • #download_strategy ⇒ T::Class[AbstractDownloadStrategy] приватный
  • #downloaded! ⇒ void приватный
  • #downloaded? ⇒ Boolean приватный
  • #downloaded_and_valid? ⇒ Boolean приватный
  • #downloader ⇒ AbstractDownloadStrategy приватный
  • #downloading! ⇒ void приватный
  • #extracting! ⇒ void приватный
  • #fetch(verify_download_integrity: true, timeout: nil, quiet: false) ⇒ Pathname приватный
  • #fetched_size ⇒ Integer? приватный

    Общий объём загруженных данных в байтах, если доступен.

  • #freeze ⇒ T.self_type приватный
  • #initialize ⇒ void приватный
  • #initialize_dup(other) ⇒ void приватный
  • #total_size ⇒ Integer? приватный

    Общий размер загрузки, если доступен.

  • #verified! ⇒ void приватный
  • #verify_download_integrity(filename) ⇒ void приватный
  • #verifying! ⇒ void приватный
  • #version ⇒ 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

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

#checksum ⇒ Checksum? (только для чтения)

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

Возвращает:

  • (Checksum, nil)


21
22
23
# File 'downloadable.rb', line 21

def checksum
  @checksum
end

#mirrors ⇒ Array<String> (только для чтения)

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

Возвращает:

  • (Array<String>)


24
25
26
# File 'downloadable.rb', line 24

def mirrors
  @mirrors
end

#phase ⇒ Symbol

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

Возвращает:

  • (Symbol)


27
28
29
# File 'downloadable.rb', line 27

def phase
  @phase
end

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

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

Возвращает:

  • (String, URL, nil)


18
19
20
# File 'downloadable.rb', line 18

def url
  @url
end

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

#cached_download ⇒ Pathname

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

Возвращает:

  • (Pathname)


96
97
98
# File 'downloadable.rb', line 96

def cached_download
  downloader.cached_location
end

#clear_cache ⇒ void

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

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



101
102
103
# File 'downloadable.rb', line 101

def clear_cache
  downloader.clear_cache
end

#download_queue_message ⇒ String

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

Возвращает:

  • (String)


75
76
77
# File 'downloadable.rb', line 75

def download_queue_message
  "#{download_queue_type}#{download_queue_name}"
end

#download_queue_name ⇒ String

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

Возвращает:

  • (String)


69
# File 'downloadable.rb', line 69

def download_queue_name = download_name

#download_queue_type ⇒ String

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

Этот метод является абстрактным.

Возвращает:

  • (String)


72
# File 'downloadable.rb', line 72

def download_queue_type; end

#download_strategy ⇒ T::Class[AbstractDownloadStrategy]

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

Возвращает:

  • (T::Class[AbstractDownloadStrategy])


126
127
128
# File 'downloadable.rb', line 126

def download_strategy
  @download_strategy ||= T.must(determine_url).download_strategy
end

#downloaded! ⇒ void

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

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



32
# File 'downloadable.rb', line 32

def downloaded! = (@phase = :downloaded)

#downloaded? ⇒ Boolean

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

Возвращает:

  • (Boolean)


80
81
82
# File 'downloadable.rb', line 80

def downloaded?
  cached_download.exist?
end

#downloaded_and_valid? ⇒ Boolean

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

Возвращает:

  • (Boolean)


85
86
87
88
89
90
91
92
93
# File 'downloadable.rb', line 85

def downloaded_and_valid?
  return false unless cached_download.file?
  return false if checksum.blank?

  with_context(quiet: true) { verify_download_integrity(cached_download) }
  true
rescue ChecksumMismatchError
  false
end

#downloader ⇒ AbstractDownloadStrategy

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

Возвращает:

  • (AbstractDownloadStrategy)


131
132
133
134
135
136
137
138
139
# File 'downloadable.rb', line 131

def downloader
  @downloader ||= begin
    primary_url, *mirrors = determine_url_mirrors
    raise ArgumentError, "attempted to use a `Downloadable` without a URL!" if primary_url.blank?

    download_strategy.new(primary_url, download_name, version,
                          mirrors:, cache:, **T.must(@url).specs)
  end
end

#downloading! ⇒ void

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

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



30
# File 'downloadable.rb', line 30

def downloading! = (@phase = :downloading)

#extracting! ⇒ void

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

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



38
# File 'downloadable.rb', line 38

def extracting! = (@phase = :extracting)

#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)


148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
# File 'downloadable.rb', line 148

def fetch(verify_download_integrity: true, timeout: nil, quiet: false)
  downloading!

  cache.mkpath

  begin
    downloader.quiet! if quiet
    downloader.fetch(timeout:)
  rescue ErrorDuringExecution, CurlDownloadStrategyError => e
    raise DownloadError.new(self, e)
  end

  downloaded!

  download = cached_download
  verify_download_integrity(download) if verify_download_integrity
  download
end

#fetched_size ⇒ Integer?

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

Общее количество загруженных байтов, если оно доступно.

Возвращает:

  • (Integer, nil)


107
108
109
# File 'downloadable.rb', line 107

def fetched_size
  downloader.fetched_size
end

#freeze ⇒ T.self_type

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

Возвращает:

  • (T.self_type)


61
62
63
64
65
66
# File 'downloadable.rb', line 61

def freeze
  @checksum.freeze
  @mirrors.freeze
  @version.freeze
  super
end

#initialize ⇒ void

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



41
42
43
44
45
46
47
48
49
50
# File 'downloadable.rb', line 41

def initialize
  @url = T.let(nil, T.nilable(URL))
  @checksum = T.let(nil, T.nilable(Checksum))
  @mirrors = T.let([], T::Array[String])
  @version = T.let(nil, T.nilable(Version))
  @download_strategy = T.let(nil, T.nilable(T::Class[AbstractDownloadStrategy]))
  @downloader = T.let(nil, T.nilable(AbstractDownloadStrategy))
  @download_name = T.let(nil, T.nilable(String))
  @phase = T.let(:preparing, Symbol)
end

#initialize_dup(other) ⇒ void

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

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

Параметры:

  • other (Downloadable)


53
54
55
56
57
58
# File 'downloadable.rb', line 53

def initialize_dup(other)
  super
  @checksum = @checksum.dup
  @mirrors = @mirrors.dup
  @version = @version.dup
end

#total_size ⇒ Integer?

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

Общий размер загрузки, если доступен.

Возвращает:

  • (Integer, nil)


113
114
115
# File 'downloadable.rb', line 113

def total_size
  @total_size ||= T.let(downloader.total_size, T.nilable(Integer))
end

#verified! ⇒ void

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

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



36
# File 'downloadable.rb', line 36

def verified! = (@phase = :verified)

#verify_download_integrity(filename) ⇒ void

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

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

Параметры:

  • filename (Pathname)


168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# File 'downloadable.rb', line 168

def verify_download_integrity(filename)
  verifying!

  if filename.file?
    ohai "Verifying checksum for '#{filename.basename}'" if verbose?
    filename.verify_checksum(checksum)
    verified!
  end
rescue ChecksumMissingError
  return if silence_checksum_missing_error?

  opoo <<~EOS
    Cannot verify integrity of '#{filename.basename}'.
    No checksum was provided.
    For your reference, the checksum is:
      sha256 "#{filename.sha256}"
  EOS
end

#verifying! ⇒ void

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

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



34
# File 'downloadable.rb', line 34

def verifying! = (@phase = :verifying)

#version ⇒ Version?

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

Возвращает:

  • (Version, nil)


118
119
120
121
122
123
# File 'downloadable.rb', line 118

def version
  return @version if @version && !@version.null?

  version = determine_url&.version
  version unless version&.null?
end

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

Spec-Zone.ru

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