in lib/projectFile.js [29:86]
function parseProjectFile (locations) {
const project_dir = locations.root;
const pbxPath = locations.pbxproj;
if (cachedProjectFiles[project_dir]) {
return cachedProjectFiles[project_dir];
}
const xcodeproj = xcode.project(pbxPath);
xcodeproj.parseSync();
const config_file = path.join(project_dir, 'App', 'config.xml');
if (!fs.existsSync(config_file)) {
throw new CordovaError('Could not find config.xml file.');
}
const frameworks_file = path.join(project_dir, 'frameworks.json');
let frameworks = {};
try {
frameworks = require(frameworks_file);
} catch (e) { }
const xcode_dir = path.join(project_dir, 'App');
const pluginsDir = path.resolve(xcode_dir, 'Plugins');
const resourcesDir = path.resolve(xcode_dir, 'Resources');
cachedProjectFiles[project_dir] = {
plugins_dir: pluginsDir,
resources_dir: resourcesDir,
xcode: xcodeproj,
xcode_path: xcode_dir,
pbx: pbxPath,
projectDir: project_dir,
platformWww: path.join(project_dir, 'platform_www'),
www: path.join(project_dir, 'www'),
write: function () {
fs.writeFileSync(pbxPath, xcodeproj.writeSync({ omitEmptyValues: true }));
if (Object.keys(this.frameworks).length === 0) {
// If there is no framework references remain in the project, just remove this file
fs.rmSync(frameworks_file, { force: true });
return;
}
fs.writeFileSync(frameworks_file, JSON.stringify(this.frameworks, null, 4));
},
getPackageName: function () {
return xcodeproj.getBuildProperty('PRODUCT_BUNDLE_IDENTIFIER', undefined, 'App').replace(/^"/, '').replace(/"$/, '');
},
getInstaller: function (name) {
return pluginHandlers.getInstaller(name);
},
getUninstaller: function (name) {
return pluginHandlers.getUninstaller(name);
},
frameworks
};
return cachedProjectFiles[project_dir];
}