class Pod::Installer::Xcode::PodsProjectGenerator::TargetInstallationResult

A simple container produced after a target installation is completed.

Attributes

app_native_targets[R]

@return [Hash{Specification => PBXNativeTarget}] app_native_targets

The app native targets that were produced for this target. Can be empty if there were no app
native targets created (e.g. no app specs present).
app_resource_bundle_targets[R]

@return [Hash{String=>Array<PBXNativeTarget>}] app_resource_bundle_targets

The app resource bundle targets that were produced for this target keyed by app spec name.
Can be empty if the target had no resource bundles for any apps.
native_target[R]

@return [PBXNativeTarget] native_target

The native target that was produced for this target.
resource_bundle_targets[R]

@return [Array<PBXNativeTarget>] resource_bundle_targets

The resource bundle targets that were produced for this target. Can be empty if the target had
no resource bundles.
target[R]

@return [Target] target

The target this installation result is for.
test_app_host_targets[R]

@return [Array<PBXNativeTarget>] test_app_host_targets

The test app host native targets that were produced for this target. Can be empty.
test_native_targets[R]

@return [Array<PBXNativeTarget>] test_native_targets

The test native targets that were produced for this target. Can be empty if there were no test
native targets created (e.g. no test specs present).
test_resource_bundle_targets[R]

@return [Hash{String=>Array<PBXNativeTarget>}] test_resource_bundle_targets

The test resource bundle targets that were produced for this target keyed by test spec name.
Can be empty if the target had no resource bundles for any tests.

Public Class Methods

new(target, native_target, resource_bundle_targets = [], test_native_targets = [], test_resource_bundle_targets = {}, test_app_host_targets = [], app_native_targets = {}, app_resource_bundle_targets = {}) click to toggle source

Initialize a new instance

@param [Target] target @see target @param [PBXNativeTarget] native_target @see native_target @param [Array<PBXNativeTarget>] resource_bundle_targets @see resource_bundle_targets @param [Array<PBXNativeTarget>] test_native_targets @see test_native_targets @param [Hash{String=>Array<PBXNativeTarget>}] test_resource_bundle_targets @see test_resource_bundle_targets @param [Array<PBXNativeTarget>] test_app_host_targets @see test_app_host_targets @param [Hash{Specification => PBXNativeTarget}] app_native_targets @see app_native_targets @param [Hash{String=>Array<PBXNativeTarget>}] app_resource_bundle_targets @see app_resource_bundle_targets

# File lib/cocoapods/installer/xcode/pods_project_generator/target_installation_result.rb, line 64
def initialize(target, native_target, resource_bundle_targets = [], test_native_targets = [],
               test_resource_bundle_targets = {}, test_app_host_targets = [],
               app_native_targets = {}, app_resource_bundle_targets = {})
  @target = target
  @native_target = native_target
  @resource_bundle_targets = resource_bundle_targets
  @test_native_targets = test_native_targets
  @test_resource_bundle_targets = test_resource_bundle_targets
  @test_app_host_targets = test_app_host_targets
  @app_native_targets = app_native_targets
  @app_resource_bundle_targets = app_resource_bundle_targets
end

Public Instance Methods

app_host_target_labelled(label) click to toggle source

@param label [String] the label of the app host target.

@return [PBXNativeTarget] the app host target with the given target label.

# File lib/cocoapods/installer/xcode/pods_project_generator/target_installation_result.rb, line 117
def app_host_target_labelled(label)
  app_native_targets.values.find do |app_native_target|
    app_native_target.name == label
  end || test_app_host_targets.find do |app_native_target|
    app_native_target.name == label
  end
end
app_specs_by_native_target() click to toggle source

@return [Hash{PBXNativeTarget => Specification}] a hash where the keys are the app native targets and the value

is the app spec associated with this native target.
# File lib/cocoapods/installer/xcode/pods_project_generator/target_installation_result.rb, line 101
def app_specs_by_native_target
  app_specs_by_native_target = Hash[target.app_specs.map { |spec| [app_native_target_from_spec(spec), spec] }]
  app_specs_by_native_target.delete_if { |k, _| k.nil? }
end
native_target_for_spec(spec) click to toggle source

Returns the corresponding native target to use based on the provided specification.

@param [Specification] spec

The specification to base from in order to find the native target.

@return [PBXNativeTarget, Nil] the native target to use or `nil` if none is found.

# File lib/cocoapods/installer/xcode/pods_project_generator/target_installation_result.rb, line 84
def native_target_for_spec(spec)
  return native_target if spec.library_specification?
  return test_native_target_from_spec(spec) if spec.test_specification?
  app_native_target_from_spec(spec) if spec.app_specification?
end
non_library_specs_by_native_target() click to toggle source

@return [Hash{PBXNativeTarget => Specification}] a hash where the keys are the native targets and the value

is the non-library spec associated with this native target.
# File lib/cocoapods/installer/xcode/pods_project_generator/target_installation_result.rb, line 109
def non_library_specs_by_native_target
  test_specs_by_native_target.merge(app_specs_by_native_target)
end
test_specs_by_native_target() click to toggle source

@return [Hash{PBXNativeTarget => Specification}] a hash where the keys are the test native targets and the value

is the test spec associated with this native target.
# File lib/cocoapods/installer/xcode/pods_project_generator/target_installation_result.rb, line 93
def test_specs_by_native_target
  test_specs_by_native_target = Hash[target.test_specs.map { |spec| [test_native_target_from_spec(spec), spec] }]
  test_specs_by_native_target.delete_if { |k, _| k.nil? }
end

Private Instance Methods

app_native_target_from_spec(spec) click to toggle source
# File lib/cocoapods/installer/xcode/pods_project_generator/target_installation_result.rb, line 133
def app_native_target_from_spec(spec)
  app_native_targets[spec]
end
test_native_target_from_spec(spec) click to toggle source
# File lib/cocoapods/installer/xcode/pods_project_generator/target_installation_result.rb, line 127
def test_native_target_from_spec(spec)
  test_native_targets.find do |test_native_target|
    test_native_target.name == target.test_target_label(spec)
  end
end