Skip to content

Commit 6b1453b

Browse files
committed
Update addPbxgroup function to add subfolders recursively
1 parent 4294d60 commit 6b1453b

File tree

1 file changed

+21
-11
lines changed

1 file changed

+21
-11
lines changed

lib/pbxProject.js

+21-11
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
var util = require('util'),
22
f = util.format,
33
EventEmitter = require('events').EventEmitter,
4-
path = require('path'),
4+
$path = require('path'),
55
uuid = require('node-uuid'),
66
fork = require('child_process').fork,
77
pbxWriter = require('./pbxWriter'),
@@ -16,7 +16,7 @@ function pbxProject(filename) {
1616
if (!(this instanceof pbxProject))
1717
return new pbxProject(filename);
1818

19-
this.filepath = path.resolve(filename)
19+
this.filepath = $path.resolve(filename)
2020
}
2121

2222
util.inherits(pbxProject, EventEmitter)
@@ -302,9 +302,9 @@ pbxProject.prototype.findMainPbxGroup = function () {
302302
return null;
303303
}
304304

305-
pbxProject.prototype.addPbxGroup = function (filePathsArray, name, path, sourceTree) {
305+
pbxProject.prototype.addPbxGroup = function (filePathsArray, name, path, sourceTree, opt) {
306306
var groups = this.hash.project.objects['PBXGroup'],
307-
pbxGroupUuid = this.generateUuid(),
307+
pbxGroupUuid = opt.uuid ? opt.uuid : this.generateUuid(),
308308
commentKey = f("%s_comment", pbxGroupUuid),
309309
pbxGroup = {
310310
isa: 'PBXGroup',
@@ -338,7 +338,15 @@ pbxProject.prototype.addPbxGroup = function (filePathsArray, name, path, sourceT
338338
}
339339

340340
var file = new pbxFile(filePath);
341-
if (file.lastType == pbxFileTypes().SOURCE_FILE || file.lastType == pbxFileTypes().HEADER_FILE || fs.lstatSync(file.path).isDirectory()) {
341+
if (fs.lstatSync(filePath).isDirectory()) {
342+
file.uuid = this.generateUuid();
343+
file.fileRef = this.generateUuid();
344+
this.addToPbxFileReferenceSection(file); // PBXFileReference
345+
this.addToPbxBuildFileSection(file);
346+
pbxGroup.children.push(pbxGroupChild(file));
347+
var files = fs.readdirSync(filePath).map(p => $path.join(filePath, p));
348+
this.addPbxGroup(files, $path.basename(filePath), filePath, null, {uuid: file.uuid});
349+
}else if (file.lastType == pbxFileTypes().SOURCE_FILE || file.lastType == pbxFileTypes().HEADER_FILE) {
342350
file.uuid = this.generateUuid();
343351
file.fileRef = this.generateUuid();
344352
this.addToPbxFileReferenceSection(file); // PBXFileReference
@@ -356,11 +364,13 @@ pbxProject.prototype.addPbxGroup = function (filePathsArray, name, path, sourceT
356364
groups[commentKey] = name;
357365
}
358366

359-
let mainGroup = this.findMainPbxGroup();
360-
if (mainGroup) {
361-
var file = new pbxFile(pbxGroup.path);
362-
file.fileRef = pbxGroupUuid;
363-
mainGroup.children.push(pbxGroupChild(file));
367+
if (opt.isMain) {
368+
let mainGroup = this.findMainPbxGroup();
369+
if (mainGroup) {
370+
var file = new pbxFile(pbxGroup.path);
371+
file.fileRef = pbxGroupUuid;
372+
mainGroup.children.push(pbxGroupChild(file));
373+
}
364374
}
365375

366376
return {uuid: pbxGroupUuid, pbxGroup: pbxGroup};
@@ -1077,7 +1087,7 @@ function searchPathForFile(file, proj) {
10771087

10781088
var plugins = proj.pbxGroupByName('Plugins'),
10791089
pluginsPath = plugins ? plugins.path : null,
1080-
fileDir = path.dirname(file.path);
1090+
fileDir = $path.dirname(file.path);
10811091

10821092
if (fileDir == '.') {
10831093
fileDir = '';

0 commit comments

Comments
 (0)