Skip to content

Commit

Permalink
chore: moved config xml hook
Browse files Browse the repository at this point in the history
  • Loading branch information
ethanneff committed Dec 15, 2016
1 parent 1b2a375 commit a27377a
Show file tree
Hide file tree
Showing 3 changed files with 127 additions and 59 deletions.
78 changes: 78 additions & 0 deletions hooks/lib/sdk/configXmlHelper.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
'use strict';

// read cordova config.xml

(function() {
// properties
var path = require('path');
var xmlHelper = require('./xmlHelper.js');
var ANDROID = 'android';
var IOS = 'ios';
var CONFIG_FILE_NAME = 'config.xml';
var context;
var projectRoot;

// entry
module.exports = ConfigXmlHelper;

function ConfigXmlHelper(cordovaContext) {
context = cordovaContext;
projectRoot = context.opts.projectRoot;
}

ConfigXmlHelper.prototype.read = function() {
var filePath = getConfigXmlFilePath();

return xmlHelper.readXmlAsJson(filePath);
}

ConfigXmlHelper.prototype.getPackageName = function(platform) {
var configFilePath = getConfigXmlFilePath();
var config = getCordovaConfigParser(configFilePath);
var packageName;

switch (platform) {
case ANDROID: {
packageName = config.android_packageName();
break;
}
case IOS: {
packageName = config.ios_CFBundleIdentifier();
break;
}
}
if (packageName === undefined || packageName.length == 0) {
packageName = config.packageName();
}

return packageName;
}

ConfigXmlHelper.prototype.getProjectName = function() {
return getProjectName();
}

function getCordovaConfigParser(configFilePath) {
var ConfigParser;

// If Cordova 5.4+ use parser from cordova-common.
try {
ConfigParser = context.requireCordovaModule('cordova-common/src/ConfigParser/ConfigParser');
} catch (e) {
ConfigParser = context.requireCordovaModule('cordova-lib/src/configparser/ConfigParser')
}

return new ConfigParser(configFilePath);
}

function getConfigXmlFilePath() {
return path.join(projectRoot, CONFIG_FILE_NAME);
}

function getProjectName() {
var configFilePath = getConfigXmlFilePath();
var config = getCordovaConfigParser(configFilePath);

return config.name();
}
})();
49 changes: 49 additions & 0 deletions hooks/lib/sdk/xmlHelper.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
'use strict';

// read/write from/to xml file

(function() {
// properties
var fs = require('fs');
var xml2js = require('xml2js');

// entry
module.exports = {
readXmlAsJson: readXmlAsJson,
writeJsonAsXml: writeJsonAsXml
};

// methods
function readXmlAsJson(filePath) {
var xmlData;
var xmlParser;
var parsedData;

try {
xmlData = fs.readFileSync(filePath);
xmlParser = new xml2js.Parser();
xmlParser.parseString(xmlData, function(err, data) {
if (data) {
parsedData = data;
}
});
} catch (err) {}

return parsedData;
}

function writeJsonAsXml(jsData, filePath, options) {
var xmlBuilder = new xml2js.Builder(options);
var changedXmlData = xmlBuilder.buildObject(jsData);
var isSaved = true;

try {
fs.writeFileSync(filePath, changedXmlData);
} catch (err) {
console.log(err);
isSaved = false;
}

return isSaved;
}
})();
59 changes: 0 additions & 59 deletions hooks/lib/xmlHelper.js

This file was deleted.

0 comments on commit a27377a

Please sign in to comment.