class Pod::Installer::Xcode::MultiPodsProjectGenerator

Public Instance Methods

generate!() click to toggle source
# File lib/cocoapods-headermap/multi_pods_project_generator.rb, line 7
def generate!
    # Generate container Pods.xcodeproj.
    container_project = create_container_project(aggregate_targets, sandbox.project_path)

    project_paths_by_pod_targets = pod_targets.group_by do |pod_target|
        sandbox.pod_target_project_path(pod_target.project_name)
    end

    # If `incremental_installation` enabled, read cache from sanbox.
    if installation_options.incremental_installation
        HeaderMapsGenerator.analyze_cache_from(project_headers_cache_path, pod_targets)
    end

    projects_by_pod_targets = Hash[project_paths_by_pod_targets.map do |project_path, pod_targets|
        project = create_pods_project(pod_targets, project_path, container_project)
        [project, pod_targets]
    end]

    # Generate header map files and cache if neccessary.
    HeaderMapsGenerator.generate!(sandbox)
    HeaderMapsGenerator.update_cache_to(project_headers_cache_path)

    # Note: We must call `install_file_references` on all pod targets before installing them.
    pod_target_installation_results = install_all_pod_targets(projects_by_pod_targets)
    aggregate_target_installation_results = install_aggregate_targets_into_project(container_project, aggregate_targets)
    target_installation_results = InstallationResults.new(pod_target_installation_results, aggregate_target_installation_results)

    integrate_targets(target_installation_results.pod_target_installation_results)
    wire_target_dependencies(target_installation_results)
    PodsProjectGeneratorResult.new(container_project, projects_by_pod_targets, target_installation_results)
end
project_headers_cache_path() click to toggle source

Project headers cache path.

# File lib/cocoapods-headermap/multi_pods_project_generator.rb, line 40
def project_headers_cache_path
    sandbox.root.join('.project_cache', 'project_headers_cache.yaml')
end