Skip to content

Commit 533d9b8

Browse files
elmassealunny
authored andcommitted
Adding add/removeToHeaderSearchPath
1 parent 67f5f96 commit 533d9b8

File tree

2 files changed

+91
-0
lines changed

2 files changed

+91
-0
lines changed

lib/pbxProject.js

+43
Original file line numberDiff line numberDiff line change
@@ -491,6 +491,49 @@ pbxProject.prototype.addToLibrarySearchPaths = function (file) {
491491
}
492492
}
493493

494+
pbxProject.prototype.removeFromHeaderSearchPaths = function (file) {
495+
var configurations = nonComments(this.pbxXCBuildConfigurationSection()),
496+
INHERITED = '"$(inherited)"',
497+
SEARCH_PATHS = 'HEADER_SEARCH_PATHS',
498+
config, buildSettings, searchPaths;
499+
var new_path = searchPathForFile(file, this);
500+
501+
for (config in configurations) {
502+
buildSettings = configurations[config].buildSettings;
503+
504+
if (unquote(buildSettings['PRODUCT_NAME']) != this.productName)
505+
continue;
506+
507+
if (buildSettings[SEARCH_PATHS]) {
508+
var matches = buildSettings[SEARCH_PATHS].filter(function(p) {
509+
return p.indexOf(new_path) > -1;
510+
});
511+
matches.forEach(function(m) {
512+
var idx = buildSettings[SEARCH_PATHS].indexOf(m);
513+
buildSettings[SEARCH_PATHS].splice(idx, 1);
514+
});
515+
}
516+
517+
}
518+
}
519+
pbxProject.prototype.addToHeaderSearchPaths = function (file) {
520+
var configurations = nonComments(this.pbxXCBuildConfigurationSection()),
521+
INHERITED = '"$(inherited)"',
522+
config, buildSettings, searchPaths;
523+
524+
for (config in configurations) {
525+
buildSettings = configurations[config].buildSettings;
526+
527+
if (unquote(buildSettings['PRODUCT_NAME']) != this.productName)
528+
continue;
529+
530+
if (!buildSettings['HEADER_SEARCH_PATHS']) {
531+
buildSettings['HEADER_SEARCH_PATHS'] = [INHERITED];
532+
}
533+
534+
buildSettings['HEADER_SEARCH_PATHS'].push(searchPathForFile(file, this));
535+
}
536+
}
494537
// a JS getter. hmmm
495538
pbxProject.prototype.__defineGetter__("productName", function () {
496539
var configurations = nonComments(this.pbxXCBuildConfigurationSection()),

test/HeaderSearchPaths.js

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
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.addAndRemoveToFromHeaderSearchPaths = {
19+
'add should add the path to each configuration section':function(test) {
20+
proj.addToHeaderSearchPaths({
21+
path:'some/path/include'
22+
});
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+
var lib = config[ref].buildSettings.HEADER_SEARCH_PATHS;
27+
test.ok(lib[1].indexOf('$(SRCROOT)/KitchenSinktablet/some/path') > -1);
28+
}
29+
test.done();
30+
},
31+
'remove should remove from the path to each configuration section':function(test) {
32+
var libPath = 'some/path/include';
33+
proj.addToHeaderSearchPaths({
34+
path:libPath
35+
});
36+
proj.removeFromHeaderSearchPaths({
37+
path:libPath
38+
});
39+
var config = proj.pbxXCBuildConfigurationSection();
40+
for (var ref in config) {
41+
if (ref.indexOf('_comment') > -1 || config[ref].buildSettings.PRODUCT_NAME != PRODUCT_NAME) continue;
42+
var lib = config[ref].buildSettings.HEADER_SEARCH_PATHS;
43+
test.ok(lib.length === 1);
44+
test.ok(lib[0].indexOf('$(SRCROOT)/KitchenSinktablet/some/path/include') == -1);
45+
}
46+
test.done();
47+
}
48+
}

0 commit comments

Comments
 (0)