Class: Pod::Installer::Xcode::PodsProjectGenerator::PodTargetInstaller
- Inherits:
-
TargetInstaller
- Object
- TargetInstaller
- Pod::Installer::Xcode::PodsProjectGenerator::PodTargetInstaller
- Defined in:
- lib/cocoapods/installer/xcode/pods_project_generator/pod_target_installer.rb
Overview
Creates the target for the Pods libraries in the Pods project and the relative support files.
Instance Attribute Summary collapse
- #target ⇒ PodTarget readonly
-
#umbrella_header_paths ⇒ Array<Pathname>
readonly
Array of umbrella header paths in the headers directory.
Attributes inherited from TargetInstaller
Class Method Summary collapse
-
.bcsymbolmap_paths(target) ⇒ Array<String>
The bcsymbolmap paths for the given target.
-
.dsym_paths(target) ⇒ Array<String>
The dSYM paths for the given target.
-
.xcframework_dsyms(xcframework_path) ⇒ Array<Pathname>
All found .dSYM paths.
Instance Method Summary collapse
-
#initialize(sandbox, project, target, umbrella_header_paths = nil) ⇒ PodTargetInstaller
constructor
Initialize a new instance.
-
#install! ⇒ TargetInstallationResult
Creates the target in the Pods project and the relative support files.
Methods included from TargetInstallerHelper
create_info_plist_file_with_sandbox, create_prefix_header, update_changed_file
Constructor Details
#initialize(sandbox, project, target, umbrella_header_paths = nil) ⇒ PodTargetInstaller
Initialize a new instance
30 31 32 33 |
# File 'lib/cocoapods/installer/xcode/pods_project_generator/pod_target_installer.rb', line 30 def initialize(sandbox, project, target, umbrella_header_paths = nil) super(sandbox, project, target) @umbrella_header_paths = umbrella_header_paths end |
Instance Attribute Details
#target ⇒ PodTarget (readonly)
Returns @see TargetInstaller#target.
21 22 23 |
# File 'lib/cocoapods/installer/xcode/pods_project_generator/pod_target_installer.rb', line 21 def target @target end |
#umbrella_header_paths ⇒ Array<Pathname> (readonly)
Returns Array of umbrella header paths in the headers directory.
17 18 19 |
# File 'lib/cocoapods/installer/xcode/pods_project_generator/pod_target_installer.rb', line 17 def umbrella_header_paths @umbrella_header_paths end |
Class Method Details
.bcsymbolmap_paths(target) ⇒ Array<String>
Returns the bcsymbolmap paths for the given target.
1220 1221 1222 1223 1224 |
# File 'lib/cocoapods/installer/xcode/pods_project_generator/pod_target_installer.rb', line 1220 def bcsymbolmap_paths(target) target.framework_paths.values.flatten.reject do |fmwk_path| fmwk_path.bcsymbolmap_paths.nil? end.flat_map(&:bcsymbolmap_paths).uniq end |
.dsym_paths(target) ⇒ Array<String>
Returns the dSYM paths for the given target.
1206 1207 1208 1209 1210 1211 1212 1213 1214 |
# File 'lib/cocoapods/installer/xcode/pods_project_generator/pod_target_installer.rb', line 1206 def dsym_paths(target) dsym_paths = target.framework_paths.values.flatten.reject { |fmwk_path| fmwk_path.dsym_path.nil? }.map(&:dsym_path) dsym_paths.concat(target.xcframeworks.values.flatten.flat_map { |xcframework| xcframework_dsyms(xcframework.path) }) dsym_paths.map do |dsym_path| dsym_pathname = Pathname(dsym_path) dsym_path = "${PODS_ROOT}/#{dsym_pathname.relative_path_from(target.sandbox.root)}" unless dsym_pathname.relative? dsym_path end end |
.xcframework_dsyms(xcframework_path) ⇒ Array<Pathname>
Returns all found .dSYM paths.
1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 |
# File 'lib/cocoapods/installer/xcode/pods_project_generator/pod_target_installer.rb', line 1231 def xcframework_dsyms(xcframework_path) basename = File.basename(xcframework_path, '.xcframework') dsym_basename = basename + '.dSYMs' path = xcframework_path.dirname + dsym_basename if File.directory?(path) Dir.glob(path + '*.dSYM') else [] end end |
Instance Method Details
#install! ⇒ TargetInstallationResult
Creates the target in the Pods project and the relative support files.
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 |
# File 'lib/cocoapods/installer/xcode/pods_project_generator/pod_target_installer.rb', line 39 def install! UI. "- Installing target `#{target.name}` #{target.platform}" do create_support_files_dir library_file_accessors = target.file_accessors.select { |fa| fa.spec.library_specification? } test_file_accessors = target.file_accessors.select { |fa| fa.spec.test_specification? } app_file_accessors = target.file_accessors.select { |fa| fa.spec.app_specification? } native_target = if target.should_build? add_target else # For targets that should not be built (e.g. pre-built vendored frameworks etc), we add a placeholder # PBXAggregateTarget that will be used to wire up dependencies later. add_placeholder_target end resource_bundle_targets = add_resources_bundle_targets(library_file_accessors).values.flatten test_native_targets = add_test_targets test_app_host_targets = add_test_app_host_targets test_resource_bundle_targets = add_resources_bundle_targets(test_file_accessors) app_native_targets = add_app_targets app_resource_bundle_targets = add_resources_bundle_targets(app_file_accessors) add_files_to_build_phases(native_target, test_native_targets, app_native_targets) targets_to_validate = test_native_targets + app_native_targets.values targets_to_validate << native_target if target.should_build? validate_targets_contain_sources(targets_to_validate) validate_xcframeworks if target.should_build? create_copy_xcframeworks_script unless target.xcframeworks.values.all?(&:empty?) create_xcconfig_file(native_target, resource_bundle_targets) create_test_xcconfig_files(test_native_targets, test_resource_bundle_targets) create_app_xcconfig_files(app_native_targets, app_resource_bundle_targets) if target.should_build? && target.defines_module? && !skip_modulemap?(target.library_specs) create_module_map(native_target) do |generator| generator.headers.concat module_map_additional_headers end create_umbrella_header(native_target) do |generator| generator.imports += library_file_accessors.flat_map do |file_accessor| header_dir = if !target.build_as_framework? && dir = file_accessor.spec_consumer.header_dir Pathname.new(dir) end file_accessor.public_headers.map do |public_header| public_header = if header_mappings_dir(file_accessor) public_header.relative_path_from(header_mappings_dir(file_accessor)) else public_header.basename end if header_dir public_header = header_dir.join(public_header) end public_header end end end end if target.should_build? && target.build_as_framework? unless skip_info_plist?(native_target) create_info_plist_file(target.info_plist_path, native_target, target.version, target.platform, :additional_entries => target.info_plist_entries) end create_build_phase_to_symlink_header_folders(native_target) end if target.should_build? && target.build_as_library? && target.uses_swift? add_swift_library_compatibility_header_phase(native_target) end project_directory = project.path.dirname if target.should_build? && !skip_pch?(target.library_specs) path = target.prefix_header_path create_prefix_header(path, library_file_accessors, target.platform, native_target, project_directory) add_file_to_support_group(path) end unless skip_pch?(target.test_specs) target.test_specs.each do |test_spec| path = target.prefix_header_path_for_spec(test_spec) test_spec_consumer = test_spec.consumer(target.platform) test_native_target = test_native_target_from_spec(test_spec_consumer.spec, test_native_targets) create_prefix_header(path, test_file_accessors, target.platform, test_native_target, project_directory) add_file_to_support_group(path) end end unless skip_pch?(target.app_specs) target.app_specs.each do |app_spec| path = target.prefix_header_path_for_spec(app_spec) app_spec_consumer = app_spec.consumer(target.platform) app_native_target = app_native_targets[app_spec_consumer.spec] create_prefix_header(path, app_file_accessors, target.platform, app_native_target, project_directory) add_file_to_support_group(path) end end create_dummy_source(native_target) if target.should_build? create_copy_dsyms_script clean_support_files_temp_dir TargetInstallationResult.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) end end |