Class: Pod::Installer::UserProjectIntegrator

Inherits:
Object
  • Object
show all
Defined in:
lib/cocoapods/installer/user_project_integrator.rb,
lib/cocoapods/installer/user_project_integrator/target_integrator.rb,
lib/cocoapods/installer/user_project_integrator/target_integrator/xcconfig_integrator.rb

Overview

The UserProjectIntegrator integrates the libraries generated by TargetDefinitions of the Podfile with their correspondent user projects.

Defined Under Namespace

Classes: TargetIntegrator

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(podfile, sandbox, installation_root, targets, targets_to_integrate, use_input_output_paths: true) ⇒ UserProjectIntegrator

Initialize a new instance

Parameters:

  • podfile (Podfile)

    @see #podfile

  • sandbox (Sandbox)

    @see #sandbox

  • installation_root (Pathname)

    @see #installation_root

  • targets (Array<AggregateTarget>)

    @see #targets

  • targets_to_integrate (Array<AggregateTarget>)

    @see #targets_to_integrate

  • use_input_output_paths (Boolean) (defaults to: true)

    @see #use_input_output_paths



56
57
58
59
60
61
62
63
# File 'lib/cocoapods/installer/user_project_integrator.rb', line 56

def initialize(podfile, sandbox, installation_root, targets, targets_to_integrate, use_input_output_paths: true)
  @podfile = podfile
  @sandbox = sandbox
  @installation_root = installation_root
  @targets = targets
  @targets_to_integrate = targets_to_integrate
  @use_input_output_paths = use_input_output_paths
end

Instance Attribute Details

#installation_rootPathname (readonly)

TODO:

This is only used to compute the workspace path in case that it should be inferred by the project. If the workspace should be in the same dir of the project, this could be removed.

Returns the path of the installation.

Returns:

  • (Pathname)

    the path of the installation.



31
32
33
# File 'lib/cocoapods/installer/user_project_integrator.rb', line 31

def installation_root
  @installation_root
end

#podfilePodfile (readonly)

Returns the podfile that should be integrated with the user projects.

Returns:

  • (Podfile)

    the podfile that should be integrated with the user projects.



19
20
21
# File 'lib/cocoapods/installer/user_project_integrator.rb', line 19

def podfile
  @podfile
end

#sandboxSandbox (readonly)

Returns The sandbox used for this installation.

Returns:

  • (Sandbox)

    The sandbox used for this installation.



23
24
25
# File 'lib/cocoapods/installer/user_project_integrator.rb', line 23

def sandbox
  @sandbox
end

#targetsArray<AggregateTarget> (readonly)

Returns the targets represented in the Podfile.

Returns:



35
36
37
# File 'lib/cocoapods/installer/user_project_integrator.rb', line 35

def targets
  @targets
end

#targets_to_integrateArray<AggregateTarget> (readonly)

Returns the targets that require integration. This will always be equal or a smaller subset of #targets.

Returns:

  • (Array<AggregateTarget>)

    the targets that require integration. This will always be equal or a smaller subset of #targets.



40
41
42
# File 'lib/cocoapods/installer/user_project_integrator.rb', line 40

def targets_to_integrate
  @targets_to_integrate
end

#use_input_output_pathsBoolean (readonly) Also known as: use_input_output_paths?

Returns whether to use input/output paths for build phase scripts.

Returns:

  • (Boolean)

    whether to use input/output paths for build phase scripts



44
45
46
# File 'lib/cocoapods/installer/user_project_integrator.rb', line 44

def use_input_output_paths
  @use_input_output_paths
end

Instance Method Details

#integrate!void

This method returns an undefined value.

Integrates the user projects associated with the TargetDefinitions with the Pods project and its products.



70
71
72
73
74
75
76
77
# File 'lib/cocoapods/installer/user_project_integrator.rb', line 70

def integrate!
  create_workspace
  deintegrated_projects = deintegrate_removed_targets
  integrate_user_targets
  warn_about_xcconfig_overrides
  projects_to_save = (user_projects_to_integrate + deintegrated_projects).uniq
  save_projects(projects_to_save)
end