class CocoapodsMonorepo::PodspecLocalCache

Cache all path of the `podspec` under the specified directory.

Attributes

local_podspecs[R]

@return [Hash<String => String>] All podspec under specified directory.

Public Class Methods

from_local_path(directory_path) click to toggle source

Create instance of `PodspecLocalCache` from some directory.

# File lib/cocoapods-monorepo/podspec_local_cache.rb, line 16
def self.from_local_path(directory_path)
    unless File.directory?(directory_path)
      raise Pod::Informative, "[cocoapods-monorepo]: `#{directory_path}` is not a directory!"
    end
    podspecs = {}
    podspec_files = Dir.glob(File.join(directory_path, "*", "*.podspec"))
    podspec_files.each do |podspec_file|
        specification = Pod::Specification.from_file(podspec_file)
        validate_podspec(specification)
        podspecs[specification.name] = specification.defined_in_file.to_s
    end
    new(podspecs.freeze)
end
new(local_podspecs) click to toggle source
# File lib/cocoapods-monorepo/podspec_local_cache.rb, line 11
def initialize(local_podspecs)
    @local_podspecs = local_podspecs
end
validate_podspec(podspec) click to toggle source

Checking whether `podspec` is valid or not.

# File lib/cocoapods-monorepo/podspec_local_cache.rb, line 31
def self.validate_podspec(podspec)
    defined_in_file = podspec.defined_in_file
    podspec.defined_in_file = nil
    
    validator = validator_for_podspec(podspec)
    validator.quick = true
    validator.allow_warnings = true
    validator.ignore_public_only_results = true
    Pod::Config.instance.with_changes(:silent => true) do
      validator.validate
    end
    unless validator.validated?
      raise Pod::Informative, "[cocoapods-monorepo]: `#{name}` is failed for validation: #{validator.failure_reason}:\n#{validator.results_message}"
    end
  ensure
    podspec.defined_in_file = defined_in_file
  end
validator_for_podspec(podspec) click to toggle source
# File lib/cocoapods-monorepo/podspec_local_cache.rb, line 49
def self.validator_for_podspec(podspec)
  Pod::Validator.new(podspec, [], [])
end