Class: AbstractFileDownloadStrategy Abstract Private

Inherits:
AbstractDownloadStrategy show all
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.

This class is abstract.

Abstract superclass for all download strategies downloading a single file.

Instance Attribute Summary

Attributes inherited from AbstractDownloadStrategy

#cache, #url

Instance Method Summary collapse

Methods inherited from AbstractDownloadStrategy

#clear_cache, #fetch, #initialize, #quiet!, #quiet?, #shutup!, #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

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



305
306
307
# File 'download_strategy.rb', line 305

def basename
  cached_location.basename.sub(/^[\da-f]{64}--/, "")
end

#cached_locationObject

Path for storing the completed download.



291
292
293
294
295
296
297
298
299
300
301
302
303
# File 'download_strategy.rb', line 291

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

Path of the symlink (whose name includes the resource name, version and extension) pointing to #cached_location.



281
282
283
284
285
286
# File 'download_strategy.rb', line 281

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

#temporary_pathObject

Path for storing an incomplete download while the download is still in progress.



273
274
275
# File 'download_strategy.rb', line 273

def temporary_path
  @temporary_path ||= Pathname.new("#{cached_location}.incomplete")
end