Add copied resources' paths to "Copy Pods Resources" output file list
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5311c77..dbe1d10 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -18,6 +18,10 @@
##### Bug Fixes
+* Add copied resources' paths to "Copy Pods Resources" output file list
+ [igor-makarov](https://github.com/igor-makarov)
+ [#6936](https://github.com/CocoaPods/CocoaPods/issues/6936)
+
* Do not link system frameworks of test specs to library targets
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
[#7205](https://github.com/CocoaPods/CocoaPods/pull/7205)
diff --git a/lib/cocoapods/installer/user_project_integrator/target_integrator.rb b/lib/cocoapods/installer/user_project_integrator/target_integrator.rb
index acc2e43..cf07812 100644
--- a/lib/cocoapods/installer/user_project_integrator/target_integrator.rb
+++ b/lib/cocoapods/installer/user_project_integrator/target_integrator.rb
@@ -190,6 +190,23 @@
end
end
end
+
+ # Returns an extension in the target that corresponds to the
+ # resource's input extension.
+ #
+ # @return [String] The output extension.
+ #
+ def output_extension_for_resource(input_extension)
+ case input_extension
+ when '.storyboard' then '.storyboardc'
+ when '.xib' then '.nib'
+ when '.framework' then '.framework'
+ when '.xcdatamodel' then '.mom'
+ when '.xcdatamodeld' then '.momd'
+ when '.xcmappingmodel' then '.cdm'
+ else input_extension
+ end
+ end
end
# Integrates the user project targets. Only the targets that do **not**
@@ -263,8 +280,14 @@
input_paths = []
output_paths = []
unless resource_paths_by_config.values.all?(&:empty?)
- input_paths = [target.copy_resources_script_relative_path, *resource_paths_by_config.values.flatten.uniq]
- output_paths = ['${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}']
+ resource_paths_flattened = resource_paths_by_config.values.flatten.uniq
+ input_paths = [target.copy_resources_script_relative_path, *resource_paths_flattened]
+ # convert input paths to output paths according to extensions
+ output_paths = resource_paths_flattened.map do |input_path|
+ base_path = '${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}'
+ output_extension = TargetIntegrator.output_extension_for_resource(File.extname(input_path))
+ File.join(base_path, File.basename(input_path, File.extname(input_path)) + output_extension)
+ end
end
TargetIntegrator.add_copy_resources_script_phase_to_target(native_target, script_path, input_paths, output_paths)
end
diff --git a/lib/cocoapods/installer/xcode/pods_project_generator/pod_target_integrator.rb b/lib/cocoapods/installer/xcode/pods_project_generator/pod_target_integrator.rb
index 8ac0310..970771e 100644
--- a/lib/cocoapods/installer/xcode/pods_project_generator/pod_target_integrator.rb
+++ b/lib/cocoapods/installer/xcode/pods_project_generator/pod_target_integrator.rb
@@ -56,8 +56,13 @@
input_paths = []
output_paths = []
unless resource_paths.empty?
- input_paths = [script_path, *resource_paths.flatten.uniq]
- output_paths = ['${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}']
+ resource_paths_flattened = resource_paths.flatten.uniq
+ input_paths = [script_path, *resource_paths_flattened]
+ output_paths = resource_paths_flattened.map do |input_path|
+ base_path = '${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}'
+ output_extension = UserProjectIntegrator::TargetIntegrator.output_extension_for_resource(File.extname(input_path))
+ File.join(base_path, File.basename(input_path, File.extname(input_path)) + output_extension)
+ end
end
UserProjectIntegrator::TargetIntegrator.add_copy_resources_script_phase_to_target(native_target, script_path, input_paths, output_paths)
end
diff --git a/spec/unit/installer/user_project_integrator/target_integrator_spec.rb b/spec/unit/installer/user_project_integrator/target_integrator_spec.rb
index 25f4d69..a96f885 100644
--- a/spec/unit/installer/user_project_integrator/target_integrator_spec.rb
+++ b/spec/unit/installer/user_project_integrator/target_integrator_spec.rb
@@ -301,19 +301,41 @@
it 'adds copy pods resources input and output paths' do
resource_paths_by_config = {
- 'Debug' => ['${PODS_CONFIGURATION_BUILD_DIR}/DebugLib/DebugLib.bundle'],
- 'Release' => ['${PODS_CONFIGURATION_BUILD_DIR}/ReleaseLib/ReleaseLib.bundle'],
+ 'Debug' => [
+ '${PODS_CONFIGURATION_BUILD_DIR}/DebugLib/DebugDataModel.xcdatamodeld',
+ '${PODS_CONFIGURATION_BUILD_DIR}/DebugLib/DebugDataModel.xcdatamodel',
+ '${PODS_CONFIGURATION_BUILD_DIR}/DebugLib/DebugMappingModel.xcmappingmodel',
+ '${PODS_CONFIGURATION_BUILD_DIR}/DebugLib/DebugLib.bundle',
+ ],
+ 'Release' => [
+ '${PODS_CONFIGURATION_BUILD_DIR}/ReleaseLib/ReleaseLib.bundle',
+ '${PODS_CONFIGURATION_BUILD_DIR}/ReleaseLib/ReleaseLib.storyboard',
+ '${PODS_CONFIGURATION_BUILD_DIR}/ReleaseLib/ReleaseLibXIB.xib',
+ ],
}
@pod_bundle.stubs(:resource_paths_by_config => resource_paths_by_config)
@target_integrator.integrate!
target = @target_integrator.send(:native_targets).first
phase = target.shell_script_build_phases.find { |bp| bp.name == @copy_pods_resources_phase_name }
phase.input_paths.sort.should == %w(
+ ${PODS_CONFIGURATION_BUILD_DIR}/DebugLib/DebugDataModel.xcdatamodel
+ ${PODS_CONFIGURATION_BUILD_DIR}/DebugLib/DebugDataModel.xcdatamodeld
${PODS_CONFIGURATION_BUILD_DIR}/DebugLib/DebugLib.bundle
+ ${PODS_CONFIGURATION_BUILD_DIR}/DebugLib/DebugMappingModel.xcmappingmodel
${PODS_CONFIGURATION_BUILD_DIR}/ReleaseLib/ReleaseLib.bundle
+ ${PODS_CONFIGURATION_BUILD_DIR}/ReleaseLib/ReleaseLib.storyboard
+ ${PODS_CONFIGURATION_BUILD_DIR}/ReleaseLib/ReleaseLibXIB.xib
${SRCROOT}/../Pods/Target\ Support\ Files/Pods/Pods-resources.sh
)
- phase.output_paths.sort.should == %w(${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH})
+ phase.output_paths.sort.should == %w(
+ ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/DebugDataModel.mom
+ ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/DebugDataModel.momd
+ ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/DebugLib.bundle
+ ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/DebugMappingModel.cdm
+ ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ReleaseLib.bundle
+ ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ReleaseLib.storyboardc
+ ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ReleaseLibXIB.nib
+ )
end
it 'does not add embed frameworks build phase input output paths with no frameworks' do
diff --git a/spec/unit/installer/xcode/pods_project_generator/pod_target_integrator_spec.rb b/spec/unit/installer/xcode/pods_project_generator/pod_target_integrator_spec.rb
index 43907b8..c825c46 100644
--- a/spec/unit/installer/xcode/pods_project_generator/pod_target_integrator_spec.rb
+++ b/spec/unit/installer/xcode/pods_project_generator/pod_target_integrator_spec.rb
@@ -53,7 +53,7 @@
'${PODS_CONFIGURATION_BUILD_DIR}/TestResourceBundle.bundle',
]
@test_native_target.build_phases[1].output_paths.should == [
- '${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}',
+ '${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TestResourceBundle.bundle',
]
end