Class: AbstractDownloadStrategy Abstract Private
- Extended by:
- Forwardable
- Includes:
- Context, FileUtils, SystemCommand::Mixin
- 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.
Direct Known Subclasses
Defined Under Namespace
Modules: Pourable
Instance Attribute Summary collapse
-
#cache ⇒ Object
readonly
private
-
#cached_location ⇒ Pathname
readonly
Location of the cached download.
-
#source_modified_time ⇒ Time
readonly
Returns the most recent modified time for all files in the current working directory after stage.
-
#url ⇒ String
readonly
The download URL.
Instance Method Summary collapse
-
#basename ⇒ Object
private
-
#clear_cache ⇒ Object
Remove #cached_location and any other files associated with the resource from the cache.
-
#fetch(timeout: nil) ⇒ Object
Download and cache the resource at #cached_location.
-
#initialize(url, name, version, **meta) ⇒ AbstractDownloadStrategy
constructor
private
A new instance of AbstractDownloadStrategy.
-
#quiet! ⇒ void
Disable any output during downloading.
-
#quiet? ⇒ Boolean
private
-
#shutup! ⇒ void
deprecated
private
Deprecated.
-
#stage(&block) ⇒ Object
Unpack #cached_location into the current working directory.
Methods included from SystemCommand::Mixin
#system_command, #system_command!
Methods included from Context
current, current=, #debug?, #verbose?, #with_context
Constructor Details
#initialize(url, name, version, **meta) ⇒ AbstractDownloadStrategy
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 AbstractDownloadStrategy.
56 57 58 59 60 61 62 63 64 |
# File 'download_strategy.rb', line 56 def initialize(url, name, version, **) @url = url @name = name @version = version @cache = .fetch(:cache, HOMEBREW_CACHE) @meta = @quiet = false extend Pourable if [:bottle] end |
Instance Attribute Details
#cache ⇒ Object (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.
52 53 54 |
# File 'download_strategy.rb', line 52 def cache @cache end |
#cached_location ⇒ Pathname (readonly)
Location of the cached download.
50 51 52 |
# File 'download_strategy.rb', line 50 def cached_location @cached_location end |
#source_modified_time ⇒ Time (readonly)
Returns the most recent modified time for all files in the current working directory after stage.
133 134 135 |
# File 'download_strategy.rb', line 133 def source_modified_time Pathname.pwd.to_enum(:find).select(&:file?).map(&:mtime).max end |
#url ⇒ String (readonly)
The download URL.
44 45 46 |
# File 'download_strategy.rb', line 44 def url @url end |
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.
145 146 147 |
# File 'download_strategy.rb', line 145 def basename cached_location.basename end |
#clear_cache ⇒ Object
Remove #cached_location and any other files associated with the resource from the cache.
141 142 143 |
# File 'download_strategy.rb', line 141 def clear_cache rm_rf(cached_location) end |
#fetch(timeout: nil) ⇒ Object
Download and cache the resource at #cached_location.
69 |
# File 'download_strategy.rb', line 69 def fetch(timeout: nil); end |
#quiet! ⇒ void
This method returns an undefined value.
Disable any output during downloading.
75 76 77 |
# File 'download_strategy.rb', line 75 def quiet! @quiet = true end |
#quiet? ⇒ Boolean
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.
88 89 90 |
# File 'download_strategy.rb', line 88 def quiet? Context.current.quiet? || @quiet end |
#shutup! ⇒ 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.
Disable any output during downloading.
83 84 85 86 |
# File 'download_strategy.rb', line 83 def shutup! odeprecated "AbstractDownloadStrategy#shutup!", "AbstractDownloadStrategy#quiet!" quiet! end |
#stage(&block) ⇒ Object
Unpack #cached_location into the current working directory.
Additionally, if a block is given, the working directory was previously empty and a single directory is extracted from the archive, the block will be called with the working directory changed to that directory. Otherwise this method will return, or the block will be called, without changing the current working directory.
101 102 103 104 105 106 107 108 109 |
# File 'download_strategy.rb', line 101 def stage(&block) UnpackStrategy.detect(cached_location, prioritize_extension: true, ref_type: @ref_type, ref: @ref) .extract_nestedly(basename:, prioritize_extension: true, verbose: verbose? && !quiet?) chdir(&block) if block end |