9
0
mirror of https://gitee.com/shuto/customCamera.git synced 2024-10-06 02:12:07 +08:00

Transform generateActivity hook

This commit is contained in:
Christophe BOUCAUT 2015-07-09 14:41:13 +02:00
parent 0b1e3d4ee4
commit 2f1e185e79

View File

@ -1,8 +1,10 @@
#!/usr/bin/env node
"use strict";
// Define required.
var fs = require("fs");
var xml2js = require('xml2js');
var xml2js = require("xml2js");
var parseString = xml2js.parseString;
var builder = new xml2js.Builder();
@ -23,7 +25,7 @@ var pathResPlugin = __dirname+"/../../res/";
*/
var generatePathFrompackageName = function(packageName) {
return packageName.split(".").join("/");
}
};
/**
* Create different java classes.
@ -51,14 +53,12 @@ var createClasses = function(packageName) {
console.error("File CameraActivity.java or/and CameraLauncher.java not found.");
process.exit(1);
}
}
};
/**
* Update AndroidManifest.xml of the current application.
*
* @param {string} packageName Package name of the current application.
*/
var updateAndroidManifest = function(packageName) {
var updateAndroidManifest = function() {
var pathAndroidManifestCordova = pathAndroidCordova+"AndroidManifest.xml";
if (fs.existsSync(pathAndroidManifestCordova)) {
// get content AndroidManifest.
@ -69,19 +69,19 @@ var updateAndroidManifest = function(packageName) {
// add activity if needed.
var needAddActivity = true;
var currentActivities = contentAndroidManifest["manifest"]["application"][0]["activity"];
var currentActivities = contentAndroidManifest.manifest.application[0].activity;
for (var i = currentActivities.length - 1; i >= 0; i--) {
if (currentActivities[i]["$"]["android:name"] == "CameraActivity") {
if (currentActivities[i].$["android:name"] == "CameraActivity") {
needAddActivity = false;
}
};
}
if (needAddActivity) {
contentAndroidManifest["manifest"]["application"][0]["activity"].push({
contentAndroidManifest.manifest.application[0].activity.push({
$: {
"android:name": "CameraActivity",
"android:label": "CameraActivity",
}
})
});
var newXmlAndroidManifest = builder.buildObject(contentAndroidManifest);
fs.writeFileSync(
pathAndroidManifestCordova,
@ -92,7 +92,7 @@ var updateAndroidManifest = function(packageName) {
console.error("File AndroidManifest.xml for cordova not found.");
process.exit(1);
}
}
};
/**
* Update differents config file (translate, res/layout, etc).
@ -123,19 +123,20 @@ var updateConfig = function() {
// get translations.
var translationsForApplication = fs.readFileSync(pathTranslations, {encoding: "utf8"});
translationsForApplication = JSON.parse(translationsForApplication);
for (lang in translationsForApplication) {
var objToXml;
var parseStringCallback = function (err, result) {
objToXml = result;
};
for (var lang in translationsForApplication) {
var pathFileTranslate = pathResAndroidCordova+"values-"+lang+"/";
if (lang == "default") {
pathFileTranslate = pathResAndroidCordova+"values/";
}
var objToXml;
// already exist, get data.
if (fs.existsSync(pathFileTranslate+"strings.xml")) {
var objToXml = fs.readFileSync(pathFileTranslate+"strings.xml", {encoding: "utf8"});
parseString(objToXml, function (err, result) {
objToXml = result;
});
objToXml = fs.readFileSync(pathFileTranslate+"strings.xml", {encoding: "utf8"});
parseString(objToXml, parseStringCallback);
} else {
// generate minimal object.
objToXml = {
@ -146,8 +147,8 @@ var updateConfig = function() {
}
// add message.
for (tag in translationsForApplication[lang]) {
objToXml["resources"]["string"].push({
for (var tag in translationsForApplication[lang]) {
objToXml.resources.string.push({
_: translationsForApplication[lang][tag],
$: {
name: tag
@ -182,10 +183,10 @@ var updateConfig = function() {
fs.mkdirSync(pathResAndroidCordova+nameDirDrawable);
}
fs.writeFileSync(pathResAndroidCordova+nameDirDrawable+"/"+nameFileInDrawable, contentFileDrawable);
};
}
}
};
}
}
};
// Check if files required exist.
if (fs.existsSync(pathConfigXml)) {
@ -194,7 +195,7 @@ if (fs.existsSync(pathConfigXml)) {
parseString(configContent, function (err, result) {
configContent = result;
});
var packageName = configContent["widget"]["$"]["id"];
var packageName = configContent.widget.$.id;
createClasses(packageName);
updateAndroidManifest(packageName);