Skip to content

Commit aa3bd6b

Browse files
committed
adding resource files to Resources folder
1 parent 2abad74 commit aa3bd6b

File tree

3 files changed

+70
-36
lines changed

3 files changed

+70
-36
lines changed

lib/pbxProject.js

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -131,22 +131,30 @@ pbxProject.prototype.removeHeaderFile = function (path, opt) {
131131
}
132132

133133
pbxProject.prototype.addResourceFile = function (path, opt) {
134-
var file = this.addPluginFile(path, opt)
134+
var file = new pbxFile(path, opt);
135135

136+
correctForResourcesPath(file, this);
136137
file.uuid = this.generateUuid();
138+
file.fileRef = this.generateUuid();
137139

138140
this.addToPbxBuildFileSection(file); // PBXBuildFile
141+
this.addToPbxFileReferenceSection(file); // PBXFileReference
142+
this.addToResourcesPbxGroup(file); // PBXGroup
139143
this.addToPbxResourcesBuildPhase(file); // PBXResourcesBuildPhase
140144

141145
return file;
142146
}
143147

144148
pbxProject.prototype.removeResourceFile = function (path, opt) {
145-
var file = this.removePluginFile(path, opt)
149+
var file = new pbxFile(path, opt);
150+
151+
correctForResourcesPath(file, this);
146152

147153
this.removeFromPbxBuildFileSection(file); // PBXBuildFile
154+
this.removeFromPbxFileReferenceSection(file); // PBXFileReference
155+
this.removeFromResourcesPbxGroup(file); // PBXGroup
148156
this.removeFromPbxResourcesBuildPhase(file); // PBXResourcesBuildPhase
149-
157+
150158
return file;
151159
}
152160

@@ -239,6 +247,23 @@ pbxProject.prototype.removeFromPluginsPbxGroup = function (file) {
239247
}
240248
}
241249

250+
pbxProject.prototype.addToResourcesPbxGroup = function (file) {
251+
var pluginsGroup = this.pbxGroupByName('Resources');
252+
pluginsGroup.children.push(pbxGroupChild(file));
253+
}
254+
255+
pbxProject.prototype.removeFromResourcesPbxGroup = function (file) {
256+
var pluginsGroupChildren = this.pbxGroupByName('Resources').children, i;
257+
for(i in pluginsGroupChildren) {
258+
if(pbxGroupChild(file).value == pluginsGroupChildren[i].value &&
259+
pbxGroupChild(file).comment == pluginsGroupChildren[i].comment) {
260+
pluginsGroupChildren.splice(i, 1);
261+
break;
262+
}
263+
}
264+
}
265+
266+
242267
pbxProject.prototype.addToFrameworksPbxGroup = function (file) {
243268
var pluginsGroup = this.pbxGroupByName('Frameworks');
244269
pluginsGroup.children.push(pbxGroupChild(file));
@@ -445,4 +470,13 @@ function correctForPluginsPath(file, project) {
445470
return file;
446471
}
447472

473+
function correctForResourcesPath(file, project) {
474+
var r_plugin_dir = /^Resources\//;
475+
476+
if (project.pbxGroupByName('Resources').path)
477+
file.path = file.path.replace(r_plugin_dir, '');
478+
479+
return file;
480+
}
481+
448482
module.exports = pbxProject;

test/addResourceFile.js

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -82,65 +82,65 @@ exports.addResourceFile = {
8282
test.done();
8383
},
8484
'should add the PBXFileReference object correctly': function (test) {
85-
delete proj.pbxGroupByName('Plugins').path;
85+
delete proj.pbxGroupByName('Resources').path;
8686

87-
var newFile = proj.addResourceFile('Plugins/assets.bundle'),
87+
var newFile = proj.addResourceFile('Resources/assets.bundle'),
8888
fileRefSection = proj.pbxFileReferenceSection(),
8989
fileRefEntry = fileRefSection[newFile.fileRef];
9090

9191
test.equal(fileRefEntry.isa, 'PBXFileReference');
9292
test.equal(fileRefEntry.fileEncoding, undefined);
9393
test.equal(fileRefEntry.lastKnownFileType, '"wrapper.plug-in"');
9494
test.equal(fileRefEntry.name, 'assets.bundle');
95-
test.equal(fileRefEntry.path, 'Plugins/assets.bundle');
95+
test.equal(fileRefEntry.path, 'Resources/assets.bundle');
9696
test.equal(fileRefEntry.sourceTree, '"<group>"');
9797

9898
test.done();
9999
},
100-
'should add to the Plugins PBXGroup group': function (test) {
101-
var newFile = proj.addResourceFile('Plugins/assets.bundle'),
102-
plugins = proj.pbxGroupByName('Plugins');
100+
'should add to the Resources PBXGroup group': function (test) {
101+
var newFile = proj.addResourceFile('Resources/assets.bundle'),
102+
resources = proj.pbxGroupByName('Resources');
103103

104-
test.equal(plugins.children.length, 1);
104+
test.equal(resources.children.length, 10);
105105
test.done();
106106
},
107107
'should have the right values for the PBXGroup entry': function (test) {
108-
var newFile = proj.addResourceFile('Plugins/assets.bundle'),
109-
plugins = proj.pbxGroupByName('Plugins'),
110-
pluginObj = plugins.children[0];
108+
var newFile = proj.addResourceFile('Resources/assets.bundle'),
109+
resources = proj.pbxGroupByName('Resources'),
110+
resourceObj = resources.children[9];
111111

112-
test.equal(pluginObj.comment, 'assets.bundle');
113-
test.equal(pluginObj.value, newFile.fileRef);
112+
test.equal(resourceObj.comment, 'assets.bundle');
113+
test.equal(resourceObj.value, newFile.fileRef);
114114
test.done();
115115
},
116116
'should add to the PBXSourcesBuildPhase': function (test) {
117-
var newFile = proj.addResourceFile('Plugins/assets.bundle'),
117+
var newFile = proj.addResourceFile('Resources/assets.bundle'),
118118
sources = proj.pbxResourcesBuildPhaseObj();
119119

120120
test.equal(sources.files.length, 13);
121121
test.done();
122122
},
123123
'should have the right values for the Sources entry': function (test) {
124-
var newFile = proj.addResourceFile('Plugins/assets.bundle'),
124+
var newFile = proj.addResourceFile('Resources/assets.bundle'),
125125
sources = proj.pbxResourcesBuildPhaseObj(),
126126
sourceObj = sources.files[12];
127127

128128
test.equal(sourceObj.comment, 'assets.bundle in Resources');
129129
test.equal(sourceObj.value, newFile.uuid);
130130
test.done();
131131
},
132-
'should remove "Plugins/" from path if group path is set': function (test) {
133-
var plugins = proj.pbxGroupByName('Plugins'),
132+
'should remove "Resources/" from path if group path is set': function (test) {
133+
var resources = proj.pbxGroupByName('Resources'),
134134
newFile;
135135

136-
plugins.path = '"Test200/Plugins"';
137-
newFile = proj.addResourceFile('Plugins/assets.bundle');
136+
resources.path = '"Test200/Resources"';
137+
newFile = proj.addResourceFile('Resources/assets.bundle');
138138

139139
test.equal(newFile.path, 'assets.bundle');
140140
test.done();
141141
},
142142
tearDown: function (callback) {
143-
delete proj.pbxGroupByName('Plugins').path;
143+
delete proj.pbxGroupByName('Resources').path;
144144
callback();
145145
}
146146
}

test/removeResourceFile.js

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -132,53 +132,53 @@ exports.removeResourceFile = {
132132
test.done();
133133
},
134134
'should remove the PBXFileReference object correctly': function (test) {
135-
delete proj.pbxGroupByName('Plugins').path;
135+
delete proj.pbxGroupByName('Resources').path;
136136

137-
var newFile = proj.addResourceFile('Plugins/assets.bundle'),
137+
var newFile = proj.addResourceFile('Resources/assets.bundle'),
138138
fileRefSection = proj.pbxFileReferenceSection(),
139139
fileRefEntry = fileRefSection[newFile.fileRef];
140140

141141
test.equal(fileRefEntry.isa, 'PBXFileReference');
142142
test.equal(fileRefEntry.fileEncoding, undefined);
143143
test.equal(fileRefEntry.lastKnownFileType, '"wrapper.plug-in"');
144144
test.equal(fileRefEntry.name, 'assets.bundle');
145-
test.equal(fileRefEntry.path, 'Plugins/assets.bundle');
145+
test.equal(fileRefEntry.path, 'Resources/assets.bundle');
146146
test.equal(fileRefEntry.sourceTree, '"<group>"');
147147

148-
var deletedFile = proj.removeResourceFile('Plugins/assets.bundle'),
148+
var deletedFile = proj.removeResourceFile('Resources/assets.bundle'),
149149
fileRefSection = proj.pbxFileReferenceSection(),
150150
fileRefEntry = fileRefSection[deletedFile.fileRef];
151151

152152
test.ok(!fileRefEntry);
153153

154154
test.done();
155155
},
156-
'should remove from the Plugins PBXGroup group': function (test) {
157-
var newFile = proj.addResourceFile('Plugins/assets.bundle'),
158-
plugins = proj.pbxGroupByName('Plugins');
156+
'should remove from the Resources PBXGroup group': function (test) {
157+
var newFile = proj.addResourceFile('Resources/assets.bundle'),
158+
resources = proj.pbxGroupByName('Resources');
159159

160-
test.equal(plugins.children.length, 1);
160+
test.equal(resources.children.length, 10);
161161

162-
var deletedFile = proj.removeResourceFile('Plugins/assets.bundle'),
163-
plugins = proj.pbxGroupByName('Plugins');
162+
var deletedFile = proj.removeResourceFile('Resources/assets.bundle'),
163+
resources = proj.pbxGroupByName('Resources');
164164

165-
test.equal(plugins.children.length, 0);
165+
test.equal(resources.children.length, 9);
166166
test.done();
167167
},
168168
'should remove from the PBXSourcesBuildPhase': function (test) {
169-
var newFile = proj.addResourceFile('Plugins/assets.bundle'),
169+
var newFile = proj.addResourceFile('Resources/assets.bundle'),
170170
sources = proj.pbxResourcesBuildPhaseObj();
171171

172172
test.equal(sources.files.length, 13);
173173

174-
var deletedFile = proj.removeResourceFile('Plugins/assets.bundle'),
174+
var deletedFile = proj.removeResourceFile('Resources/assets.bundle'),
175175
sources = proj.pbxResourcesBuildPhaseObj();
176176

177177
test.equal(sources.files.length, 12);
178178
test.done();
179179
},
180180
tearDown: function (callback) {
181-
delete proj.pbxGroupByName('Plugins').path;
181+
delete proj.pbxGroupByName('Resources').path;
182182
callback();
183183
}
184184
}

0 commit comments

Comments
 (0)