Class: AbstractFileDownloadStrategy Abstract Private
- Inherits:
-
AbstractDownloadStrategy
- Object
- AbstractDownloadStrategy
- AbstractFileDownloadStrategy
- Defined in:
- download_strategy.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.
Abstract superclass for all download strategies downloading a single file.
Direct Known Subclasses
CurlDownloadStrategy, GitHubArtifactDownloadStrategy, LocalBottleDownloadStrategy
Instance Attribute Summary
Attributes inherited from AbstractDownloadStrategy
Instance Method Summary collapse
- #basename ⇒ Object private
-
#cached_location ⇒ Object
Path for storing the completed download.
-
#symlink_location ⇒ Object
Path of the symlink (whose name includes the resource name, version and extension) pointing to #cached_location.
-
#temporary_path ⇒ Object
Path for storing an incomplete download while the download is still in progress.
Methods inherited from AbstractDownloadStrategy
#clear_cache, #fetch, #initialize, #quiet!, #quiet?, #source_modified_time, #stage
Methods included from SystemCommand::Mixin
#system_command, #system_command!
Methods included from Context
current, current=, #debug?, #quiet?, #verbose?, #with_context
Constructor Details
This class inherits a constructor from AbstractDownloadStrategy
Instance Method Details
#basename ⇒ 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.
301 302 303 |
# File 'download_strategy.rb', line 301 def basename cached_location.basename.sub(/^[\da-f]{64}--/, "") end |
#cached_location ⇒ Object
Path for storing the completed download.
287 288 289 290 291 292 293 294 295 296 297 298 299 |
# File 'download_strategy.rb', line 287 def cached_location return @cached_location if defined?(@cached_location) url_sha256 = Digest::SHA256.hexdigest(url) downloads = Pathname.glob(HOMEBREW_CACHE/"downloads/#{url_sha256}--*") .reject { |path| path.extname.end_with?(".incomplete") } @cached_location = if downloads.count == 1 downloads.first else HOMEBREW_CACHE/"downloads/#{url_sha256}--#{Utils.safe_filename(resolved_basename)}" end end |
#symlink_location ⇒ Object
Path of the symlink (whose name includes the resource name, version and extension) pointing to #cached_location.
277 278 279 280 281 282 |
# File 'download_strategy.rb', line 277 def symlink_location return @symlink_location if defined?(@symlink_location) ext = Pathname(parse_basename(url)).extname @symlink_location = @cache/Utils.safe_filename("#{name}--#{version}#{ext}") end |