in lib/pbxProject.js [872:952]
pbxProject.prototype.addBuildPhase = function(filePathsArray, buildPhaseType, comment, target, optionsOrFolderType, subfolderPath) {
var buildPhaseSection,
fileReferenceSection = this.pbxFileReferenceSection(),
buildFileSection = this.pbxBuildFileSection(),
buildPhaseUuid = this.generateUuid(),
buildPhaseTargetUuid = target || this.getFirstTarget().uuid,
commentKey = f("%s_comment", buildPhaseUuid),
buildPhase = {
isa: buildPhaseType,
buildActionMask: 2147483647,
files: [],
runOnlyForDeploymentPostprocessing: 0
},
filePathToBuildFile = {};
if (buildPhaseType === 'PBXCopyFilesBuildPhase') {
buildPhase = pbxCopyFilesBuildPhaseObj(buildPhase, optionsOrFolderType, subfolderPath, comment);
} else if (buildPhaseType === 'PBXShellScriptBuildPhase') {
buildPhase = pbxShellScriptBuildPhaseObj(buildPhase, optionsOrFolderType, comment)
}
if (!this.hash.project.objects[buildPhaseType]) {
this.hash.project.objects[buildPhaseType] = new Object();
}
if (!this.hash.project.objects[buildPhaseType][buildPhaseUuid]) {
this.hash.project.objects[buildPhaseType][buildPhaseUuid] = buildPhase;
this.hash.project.objects[buildPhaseType][commentKey] = comment;
}
if (this.hash.project.objects['PBXNativeTarget'][buildPhaseTargetUuid]['buildPhases']) {
this.hash.project.objects['PBXNativeTarget'][buildPhaseTargetUuid]['buildPhases'].push({
value: buildPhaseUuid,
comment: comment
})
}
for (var key in buildFileSection) {
// only look for comments
if (!COMMENT_KEY.test(key)) continue;
var buildFileKey = key.split(COMMENT_KEY)[0],
buildFile = buildFileSection[buildFileKey];
fileReference = fileReferenceSection[buildFile.fileRef];
if (!fileReference) continue;
var pbxFileObj = new pbxFile(fileReference.path);
filePathToBuildFile[fileReference.path] = { uuid: buildFileKey, basename: pbxFileObj.basename, group: pbxFileObj.group };
}
for (var index = 0; index < filePathsArray.length; index++) {
var filePath = filePathsArray[index],
filePathQuoted = "\"" + filePath + "\"",
file = new pbxFile(filePath);
if (filePathToBuildFile[filePath]) {
buildPhase.files.push(pbxBuildPhaseObj(filePathToBuildFile[filePath]));
continue;
} else if (filePathToBuildFile[filePathQuoted]) {
buildPhase.files.push(pbxBuildPhaseObj(filePathToBuildFile[filePathQuoted]));
continue;
}
file.uuid = this.generateUuid();
file.fileRef = this.generateUuid();
this.addToPbxFileReferenceSection(file); // PBXFileReference
this.addToPbxBuildFileSection(file); // PBXBuildFile
buildPhase.files.push(pbxBuildPhaseObj(file));
}
if (buildPhaseSection) {
buildPhaseSection[buildPhaseUuid] = buildPhase;
buildPhaseSection[commentKey] = comment;
}
return { uuid: buildPhaseUuid, buildPhase: buildPhase };
}