Commit 12311943 authored by Fabio Pelosin's avatar Fabio Pelosin

[UserProjectIntegrator::TargetIngtegrator] Prepend sandbox check in a safe way (see Xcodeproj API)

parent 0ae92183
require 'active_support'
module Pod module Pod
class Installer class Installer
class UserProjectIntegrator class UserProjectIntegrator
...@@ -134,22 +136,26 @@ module Pod ...@@ -134,22 +136,26 @@ module Pod
# locked in the Pods/Manifest.lock file are in sync with the Pods defined # locked in the Pods/Manifest.lock file are in sync with the Pods defined
# in the Podfile.lock. # in the Podfile.lock.
# #
# @note The build phase is appended to the front because to fail
# fast.
#
# @return [void] # @return [void]
# #
def add_check_manifest_lock_script_phase def add_check_manifest_lock_script_phase
targets.each do |target| targets.each do |target|
phase = target.new_shell_script_build_phase('Check Pods Manifest.lock') phase = target.project.new(Xcodeproj::Project::Object::PBXShellScriptBuildPhase)
phase.shell_script = <<-EOS target.build_phases.unshift(phase)
diff "${PODS_ROOT}/../Podfile.lock" "${PODS_ROOT}/Manifest.lock" > /dev/null phase.name = 'Check Pods Manifest.lock'
if [[ $? != 0 ]] ; then phase.shell_script = <<-EOS.strip_heredoc
diff "${PODS_ROOT}/../Podfile.lock" "${PODS_ROOT}/Manifest.lock" > /dev/null
if [[ $? != 0 ]] ; then
cat << EOM cat << EOM
Podfile.lock and Manifest.lock are not in sync. Podfile.lock and Manifest.lock are not in sync.
You might need to run a \`pod install\`. You might need to run a \`pod install\`.
EOM EOM
exit 1 exit 1
fi fi
EOS EOS
target.build_phases.rotate!(-1) # if we fail, let's fail early
end end
end end
......
...@@ -302,8 +302,6 @@ module Pod ...@@ -302,8 +302,6 @@ module Pod
#--------------------------------------# #--------------------------------------#
# @note The shell script should be the last phase.
#
it "sets up an existing project with pods" do it "sets up an existing project with pods" do
config.integrate_targets = true config.integrate_targets = true
...@@ -331,17 +329,6 @@ module Pod ...@@ -331,17 +329,6 @@ module Pod
config.base_configuration_reference.path.should == 'Pods/Pods.xcconfig' config.base_configuration_reference.path.should == 'Pods/Pods.xcconfig'
end end
target.frameworks_build_phase.files.should.include libPods.build_files.first target.frameworks_build_phase.files.should.include libPods.build_files.first
target.build_phases.last.shell_script.should == %{"${SRCROOT}/Pods/Pods-resources.sh"\n}
target.build_phases.first.shell_script.should == <<-EOS
diff "${PODS_ROOT}/../Podfile.lock" "${PODS_ROOT}/Manifest.lock" > /dev/null
if [[ $? != 0 ]] ; then
cat << EOM
Podfile.lock and Manifest.lock are not in sync.
You might need to run a \`pod install\`.
EOM
exit 1
fi
EOS
end end
#--------------------------------------# #--------------------------------------#
......
...@@ -83,15 +83,15 @@ module Pod ...@@ -83,15 +83,15 @@ module Pod
it 'adds a Check Manifest.lock build phase to each target' do it 'adds a Check Manifest.lock build phase to each target' do
target = @target_integrator.targets.first target = @target_integrator.targets.first
phase = target.shell_script_build_phases.find { |bp| bp.name == "Check Pods Manifest.lock" } phase = target.shell_script_build_phases.find { |bp| bp.name == "Check Pods Manifest.lock" }
phase.shell_script.should == <<-EOS phase.shell_script.should == <<-EOS.strip_heredoc
diff "${PODS_ROOT}/../Podfile.lock" "${PODS_ROOT}/Manifest.lock" > /dev/null diff "${PODS_ROOT}/../Podfile.lock" "${PODS_ROOT}/Manifest.lock" > /dev/null
if [[ $? != 0 ]] ; then if [[ $? != 0 ]] ; then
cat << EOM cat << EOM
Podfile.lock and Manifest.lock are not in sync. Podfile.lock and Manifest.lock are not in sync.
You might need to run a \`pod install\`. You might need to run a \`pod install\`.
EOM EOM
exit 1 exit 1
fi fi
EOS EOS
end end
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment