Skip to content

Commit b51590a

Browse files
committed
Added addToBuildSettings and removeFromBuildSettings to pbxProject
1 parent 93accef commit b51590a

File tree

2 files changed

+65
-0
lines changed

2 files changed

+65
-0
lines changed

lib/pbxProject.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -896,6 +896,30 @@ pbxProject.prototype.removeFromOtherLinkerFlags = function (flag) {
896896
}
897897
}
898898

899+
pbxProject.prototype.addToBuildSettings = function (buildSetting, value) {
900+
var configurations = nonComments(this.pbxXCBuildConfigurationSection()),
901+
config, buildSettings;
902+
903+
for (config in configurations) {
904+
buildSettings = configurations[config].buildSettings;
905+
906+
buildSettings[buildSetting] = value;
907+
}
908+
}
909+
910+
pbxProject.prototype.removeFromBuildSettings = function (buildSetting) {
911+
var configurations = nonComments(this.pbxXCBuildConfigurationSection()),
912+
config, buildSettings;
913+
914+
for (config in configurations) {
915+
buildSettings = configurations[config].buildSettings;
916+
917+
if (buildSettings[buildSetting]) {
918+
delete buildSettings[buildSetting];
919+
}
920+
}
921+
}
922+
899923
// a JS getter. hmmm
900924
pbxProject.prototype.__defineGetter__("productName", function () {
901925
var configurations = nonComments(this.pbxXCBuildConfigurationSection()),

test/BuildSettings.js

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
var fullProject = require('./fixtures/full-project')
2+
fullProjectStr = JSON.stringify(fullProject),
3+
pbx = require('../lib/pbxProject'),
4+
pbxFile = require('../lib/pbxFile'),
5+
proj = new pbx('.');
6+
7+
function cleanHash() {
8+
return JSON.parse(fullProjectStr);
9+
}
10+
11+
exports.setUp = function (callback) {
12+
proj.hash = cleanHash();
13+
callback();
14+
}
15+
16+
var PRODUCT_NAME = '"KitchenSinktablet"';
17+
18+
exports.addAndRemoveToFromBuildSettings = {
19+
'add should add the build setting to each configuration section':function(test) {
20+
var buildSetting = 'some/buildSetting';
21+
var value = 'some/buildSetting';
22+
proj.addToBuildSettings(buildSetting, value);
23+
var config = proj.pbxXCBuildConfigurationSection();
24+
for (var ref in config) {
25+
if (ref.indexOf('_comment') > -1 || config[ref].buildSettings.PRODUCT_NAME != PRODUCT_NAME) continue;
26+
test.ok(config[ref].buildSettings[buildSetting] === value);
27+
}
28+
test.done();
29+
},
30+
'remove should remove from the build settings in each configuration section':function(test) {
31+
var buildSetting = 'some/buildSetting';
32+
proj.addToBuildSettings(buildSetting, 'some/buildSetting');
33+
proj.removeFromBuildSettings(buildSetting);
34+
var config = proj.pbxXCBuildConfigurationSection();
35+
for (var ref in config) {
36+
if (ref.indexOf('_comment') > -1 || config[ref].buildSettings.PRODUCT_NAME != PRODUCT_NAME) continue;
37+
test.ok(!config[ref].buildSettings.hasOwnProperty(buildSetting));
38+
}
39+
test.done();
40+
}
41+
}

0 commit comments

Comments
 (0)