Модуль: 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. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
21 22 23 | # File 'downloadable.rb', line 21 def checksum @checksum end |
#mirrors ⇒ Array<String> (только для чтения)
Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
24 25 26 | # File 'downloadable.rb', line 24 def mirrors @mirrors end |
#phase ⇒ Symbol
Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
27 28 29 | # File 'downloadable.rb', line 27 def phase @phase end |
#url ⇒ String, ... (только для чтения)
Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
18 19 20 | # File 'downloadable.rb', line 18 def url @url end |
Подробное описание методов экземпляра
#cached_download ⇒ Pathname
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
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. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
75 76 77 | # File 'downloadable.rb', line 75 def "#{download_queue_type}#{download_queue_name}" end |
#download_queue_name ⇒ String
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
69 | # File 'downloadable.rb', line 69 def download_queue_name = download_name |
#download_queue_type ⇒ String
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
72 | # File 'downloadable.rb', line 72 def download_queue_type; end |
#download_strategy ⇒ T::Class[AbstractDownloadStrategy]
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
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. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
80 81 82 | # File 'downloadable.rb', line 80 def downloaded? cached_download.exist? end |
#downloaded_and_valid? ⇒ Boolean
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
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. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
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. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
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. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Общее количество загруженных байтов, если оно доступно.
107 108 109 | # File 'downloadable.rb', line 107 def fetched_size downloader.fetched_size end |
#freeze ⇒ T.self_type
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
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. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Этот метод возвращает неопределённое значение.
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. Сторонним разработчикам по возможности не следует использовать этот метод, поскольку он может быть удалён или изменён без предупреждения.
Общий размер загрузки, если доступен.
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. Сторонним разработчикам по возможности не следует использовать этот метод, поскольку он может быть удалён или изменён без предупреждения.
Этот метод возвращает неопределённое значение.
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) 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 = (@phase = :verifying) |
#version ⇒ Version?
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности не следует использовать этот метод, поскольку он может быть удалён или изменён без предупреждения.
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