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.
1201 1202 1203 1204 1205 |
# File 'lib/cocoapods/installer/xcode/pods_project_generator/pod_target_installer.rb', line 1201 def bcsymbolmap_paths(target) target.framework_paths.values.flatten.reject do |fmwk_path| fmwk_path.bcsymbolmap_paths.nil? end.flat_map(&:bcsymbolmap_paths) end |
.dsym_paths(target) ⇒ Array<String>
Returns the dSYM paths for the given target.
1191 1192 1193 1194 1195 |
# File 'lib/cocoapods/installer/xcode/pods_project_generator/pod_target_installer.rb', line 1191 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 end |
.xcframework_dsyms(xcframework_path) ⇒ Array<Pathname>
Returns all found .dSYM paths.
1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 |
# File 'lib/cocoapods/installer/xcode/pods_project_generator/pod_target_installer.rb', line 1212 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 145 |
# 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? } unless target.should_build? # 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. native_target = add_placeholder_target resource_bundle_targets = add_resources_bundle_targets(library_file_accessors).values.flatten create_copy_dsyms_script create_copy_xcframeworks_script unless target.xcframeworks.values.all?(&:empty?) create_xcconfig_file(native_target, resource_bundle_targets) return TargetInstallationResult.new(target, native_target, resource_bundle_targets) end native_target = add_target 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) validate_targets_contain_sources(test_native_targets + app_native_targets.values + [native_target]) validate_xcframeworks 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.defines_module? 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.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.build_as_library? && target.uses_swift? add_swift_library_compatibility_header_phase(native_target) end project_directory = project.path.dirname unless 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) 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 |