in lib/prepare.js [27:92]
module.exports.prepare = function (cordovaProject, options) {
// First cleanup current config and merge project's one into own
const defaultConfigPath = path.join(this.locations.platformRootDir, 'cordova', 'defaults.xml');
const ownConfigPath = this.locations.configXml;
const sourceCfg = cordovaProject.projectConfig;
// If defaults.xml is present, overwrite platform config.xml with it.
// Otherwise save whatever is there as defaults so it can be
// restored or copy project config into platform if none exists.
if (fs.existsSync(defaultConfigPath)) {
this.events.emit('verbose', `Generating config.xml from defaults for platform "${this.platform}"`);
fs.copySync(defaultConfigPath, ownConfigPath);
} else if (fs.existsSync(ownConfigPath)) {
this.events.emit('verbose', `Generating defaults.xml from own config.xml for platform "${this.platform}"`);
fs.copySync(ownConfigPath, defaultConfigPath);
} else {
this.events.emit('verbose', `case 3 "${this.platform}"`);
fs.copySync(sourceCfg.path, ownConfigPath);
}
// merge our configs
this.config = new ConfigParser(ownConfigPath);
xmlHelpers.mergeXml(sourceCfg.doc.getroot(), this.config.doc.getroot(), this.platform, true);
this.config.write();
// Update own www dir with project's www assets and plugins' assets and js-files
this.parser.update_www(cordovaProject, this.locations);
// Update icons
updateIcons(cordovaProject, this.locations);
// Update splash screens
updateSplashScreens(cordovaProject, this.config, this.locations);
// Copy or Create manifest.json
const srcManifestPath = path.join(cordovaProject.locations.www, 'manifest.json');
if (fs.existsSync(srcManifestPath)) {
// just blindly copy it to our output/www
// todo: validate it? ensure all properties we expect exist?
const manifestPath = path.join(this.locations.www, 'manifest.json');
this.events.emit('verbose', `Copying ${srcManifestPath} => ${manifestPath}`);
fs.copySync(srcManifestPath, manifestPath);
} else {
this.events.emit('verbose', `Creating new manifest file in => ${this.path}`);
(new ManifestJsonParser(this.locations.www))
.configure(this.config)
.write();
}
(new PackageJsonParser(this.locations.www, cordovaProject.root))
.configure(this.config)
.enableDevTools(options && options.options && !options.options.release)
.write();
const userElectronSettings = cordovaProject.projectConfig.getPlatformPreference('ElectronSettingsFilePath', 'electron');
const userElectronSettingsPath = userElectronSettings && fs.existsSync(path.resolve(cordovaProject.root, userElectronSettings))
? path.resolve(cordovaProject.root, userElectronSettings)
: undefined;
// update Electron settings in .json file
(new SettingJsonParser(this.locations.www))
.configure(this.config, options.options, userElectronSettingsPath)
.write();
// update project according to config.xml changes.
return this.parser.update_project(this.config, options);
};