Class: Pod::Downloader::Cache
- Inherits:
-
Object
- Object
- Pod::Downloader::Cache
- Defined in:
- lib/cocoapods/downloader/cache.rb
Overview
The class responsible for managing Pod downloads, transparently caching them in a cache directory.
Instance Attribute Summary collapse
-
#root ⇒ Pathname
readonly
The root directory where this cache store its downloads.
Instance Method Summary collapse
-
#cache_descriptors_per_pod ⇒ Hash<String, Hash<Symbol, String>>
A hash whose keys are the pod name And values are a hash with the following keys: :spec_file : path to the spec file :name : name of the pod :version : pod version :release : boolean to tell if that’s a release pod :slug : the slug path where the pod cache is located.
-
#download_pod(request) ⇒ Response
Downloads the Pod from the given ‘request`.
-
#initialize(root) ⇒ Cache
constructor
Initialize a new instance.
Constructor Details
Instance Attribute Details
#root ⇒ Pathname (readonly)
Returns The root directory where this cache store its downloads.
13 14 15 |
# File 'lib/cocoapods/downloader/cache.rb', line 13 def root @root end |
Instance Method Details
#cache_descriptors_per_pod ⇒ Hash<String, Hash<Symbol, String>>
Returns A hash whose keys are the pod name And values are a hash with the following keys: :spec_file : path to the spec file :name : name of the pod :version : pod version :release : boolean to tell if that’s a release pod :slug : the slug path where the pod cache is located.
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/cocoapods/downloader/cache.rb', line 50 def cache_descriptors_per_pod specs_dir = root + 'Specs' release_specs_dir = specs_dir + 'Release' return {} unless specs_dir.exist? spec_paths = specs_dir.find.select { |f| f.fnmatch('*.podspec.json') } spec_paths.reduce({}) do |hash, spec_path| spec = Specification.from_file(spec_path) hash[spec.name] ||= [] is_release = spec_path.to_s.start_with?(release_specs_dir.to_s) request = Downloader::Request.new(:spec => spec, :released => is_release) hash[spec.name] << { :spec_file => spec_path, :name => spec.name, :version => spec.version, :release => is_release, :slug => root + request.slug, } hash end end |
#download_pod(request) ⇒ Response
Downloads the Pod from the given ‘request`
32 33 34 35 36 37 38 39 |
# File 'lib/cocoapods/downloader/cache.rb', line 32 def download_pod(request) cached_pod(request) || uncached_pod(request) rescue Informative raise rescue UI.notice("Error installing #{request.name}") raise end |