You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by be...@apache.org on 2013/06/17 22:52:12 UTC
git commit: [CB-3755] added app versioning support for windows phone
Updated Branches:
refs/heads/master2 8380cc23a -> c6506f548
[CB-3755] added app versioning support for windows phone
Project: http://git-wip-us.apache.org/repos/asf/cordova-cli/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-cli/commit/c6506f54
Tree: http://git-wip-us.apache.org/repos/asf/cordova-cli/tree/c6506f54
Diff: http://git-wip-us.apache.org/repos/asf/cordova-cli/diff/c6506f54
Branch: refs/heads/master2
Commit: c6506f5486b3b5cd3277321c54865594cea49a43
Parents: 8380cc2
Author: Benn Mapes <be...@gmail.com>
Authored: Mon Jun 17 13:51:01 2013 -0700
Committer: Benn Mapes <be...@gmail.com>
Committed: Mon Jun 17 13:51:36 2013 -0700
----------------------------------------------------------------------
src/metadata/wp7_parser.js | 45 +++++++++++++++++----------------
src/metadata/wp8_parser.js | 55 ++++++++++++++++++++++-------------------
2 files changed, 53 insertions(+), 47 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/c6506f54/src/metadata/wp7_parser.js
----------------------------------------------------------------------
diff --git a/src/metadata/wp7_parser.js b/src/metadata/wp7_parser.js
index 686689a..b19dc1b 100644
--- a/src/metadata/wp7_parser.js
+++ b/src/metadata/wp7_parser.js
@@ -41,7 +41,7 @@ module.exports = function wp7_parser(project) {
};
module.exports.check_requirements = function(project_root, callback) {
- events.emit('log', 'Checking WP7 requirements...');
+ events.emit('log', 'Checking wp7 requirements...');
var lib_path = path.join(util.libDirectory, 'wp7', 'cordova', require('../../platforms').wp7.version);
var custom_path = config.has_custom_path(project_root, 'wp7');
if (custom_path) lib_path = custom_path;
@@ -63,20 +63,24 @@ module.exports.prototype = {
if (config instanceof config_parser) {
} else throw new Error('update_from_config requires a config_parser object');
- // Update app name by editing app title in Properties\WMAppManifest.xml
- var name = config.name();
+ //Get manifest file
var man = fs.readFileSync(this.manifest_path, 'utf-8');
- //Strip three bytes that windows adds (http://www.multiasking.com/2012/11/851/)
- var cleanedMan = man.replace('\ufeff', '');
+ var cleanedMan = man.replace('\ufeff', ''); //Windows is the BOM
var manifest = new et.ElementTree(et.XML(cleanedMan));
+
+ //Update app version
+ var version = config.version();
+ manifest.find('.//App').attrib.Version = version;
+
+ // Update app name by editing app title in Properties\WMAppManifest.xml
+ var name = config.name();
var prev_name = manifest.find('.//App[@Title]')['attrib']['Title'];
- if(prev_name != name)
- {
+ if(prev_name != name) {
//console.log("Updating app name from " + prev_name + " to " + name);
manifest.find('.//App').attrib.Title = name;
- manifest.find('.//Title').text = name;
- fs.writeFileSync(this.manifest_path, manifest.write({indent: 4}), 'utf-8');
-
+ manifest.find('.//App').attrib.Publisher = name + " Publisher";
+ manifest.find('.//App').attrib.Author = name + " Author";
+ manifest.find('.//PrimaryToken').attrib.TokenID = name;
//update name of sln and csproj.
name = name.replace(/(\.\s|\s\.|\s+|\.+)/g, '_'); //make it a ligitamate name
prev_name = prev_name.replace(/(\.\s|\s\.|\s+|\.+)/g, '_');
@@ -104,8 +108,7 @@ module.exports.prototype = {
var cleanedPage = raw.replace(/^\uFEFF/i, '');
var csproj = new et.ElementTree(et.XML(cleanedPage));
prev_name = csproj.find('.//RootNamespace').text;
- if(prev_name != pkg)
- {
+ if(prev_name != pkg) {
//console.log("Updating package name from " + prev_name + " to " + pkg);
//CordovaAppProj.csproj
csproj.find('.//RootNamespace').text = pkg;
@@ -134,6 +137,9 @@ module.exports.prototype = {
var appCS = fs.readFileSync(path.join(this.wp7_proj_dir, 'App.xaml.cs'), 'utf-8');
fs.writeFileSync(path.join(this.wp7_proj_dir, 'App.xaml.cs'), appCS.replace(namespaceRegEx, 'namespace ' + pkg), 'utf-8');
}
+
+ //Write out manifest
+ fs.writeFileSync(this.manifest_path, manifest.write({indent: 4}), 'utf-8');
},
// Returns the platform-specific www directory.
www_dir:function() {
@@ -141,7 +147,8 @@ module.exports.prototype = {
},
// copies the app www folder into the wp7 project's www folder and updates the csproj file.
update_www:function() {
- var project_www = util.projectWww(path.join(this.wp7_proj_dir, '..', '..'));
+ var project_root = util.isCordova(this.wp7_proj_dir);
+ var project_www = util.projectWww(project_root);
// remove stock platform assets
shell.rm('-rf', this.www_dir());
// copy over all app www assets
@@ -197,21 +204,17 @@ module.exports.prototype = {
folder_contents:function(name, dir) {
var results = [];
var folder_dir = fs.readdirSync(dir);
- for(item in folder_dir)
- {
+ for(item in folder_dir) {
var stat = fs.statSync(path.join(dir, folder_dir[item]));
// means its a folder?
- if(stat.size == 0)
- {
+ if(stat.size == 0) {
var sub_dir = this.folder_contents(path.join(name, folder_dir[item]), path.join(dir, folder_dir[item]));
//Add all subfolder item paths
- for(sub_item in sub_dir)
- {
+ for(sub_item in sub_dir) {
results.push(sub_dir[sub_item]);
}
}
- else
- {
+ else {
results.push(path.join(name, folder_dir[item]));
}
}
http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/c6506f54/src/metadata/wp8_parser.js
----------------------------------------------------------------------
diff --git a/src/metadata/wp8_parser.js b/src/metadata/wp8_parser.js
index 2629f5c..1455e76 100644
--- a/src/metadata/wp8_parser.js
+++ b/src/metadata/wp8_parser.js
@@ -23,7 +23,8 @@ var fs = require('fs'),
events = require('../events'),
shell = require('shelljs'),
events = require('../events'),
- config_parser = require('../config_parser');
+ config_parser = require('../config_parser'),
+ config = require('../config');
module.exports = function wp8_parser(project) {
try {
@@ -40,11 +41,10 @@ module.exports = function wp8_parser(project) {
};
module.exports.check_requirements = function(project_root, callback) {
- events.emit('log', 'Checking WP8 requirements...');
- var custom_path = config.has_custom_path(project_root, 'wp8');
+ events.emit('log', 'Checking wp8 requirements...');
var lib_path = path.join(util.libDirectory, 'wp8', 'cordova', require('../../platforms').wp8.version);
+ var custom_path = config.has_custom_path(project_root, 'wp8');
if (custom_path) lib_path = custom_path;
-
var command = '"' + path.join(lib_path, 'bin', 'check_reqs') + '"';
events.emit('log', 'Running "' + command + '" (output to follow)');
shell.exec(command, {silent:true, async:true}, function(code, output) {
@@ -63,20 +63,24 @@ module.exports.prototype = {
if (config instanceof config_parser) {
} else throw new Error('update_from_config requires a config_parser object');
- // Update app name by editing app title in Properties\WMAppManifest.xml
- var name = config.name();
+ //Get manifest file
var man = fs.readFileSync(this.manifest_path, 'utf-8');
- //Strip three bytes that windows adds (http://www.multiasking.com/2012/11/851/)
- var cleanedMan = man.replace('\ufeff', '');
+ var cleanedMan = man.replace('\ufeff', ''); //Windows is the BOM
var manifest = new et.ElementTree(et.XML(cleanedMan));
+
+ //Update app version
+ var version = config.version();
+ manifest.find('.//App').attrib.Version = version;
+
+ // Update app name by editing app title in Properties\WMAppManifest.xml
+ var name = config.name();
var prev_name = manifest.find('.//App[@Title]')['attrib']['Title'];
- if(prev_name != name)
- {
+ if(prev_name != name) {
//console.log("Updating app name from " + prev_name + " to " + name);
manifest.find('.//App').attrib.Title = name;
- manifest.find('.//Title').text = name;
- fs.writeFileSync(this.manifest_path, manifest.write({indent: 4}), 'utf-8');
-
+ manifest.find('.//App').attrib.Publisher = name + " Publisher";
+ manifest.find('.//App').attrib.Author = name + " Author";
+ manifest.find('.//PrimaryToken').attrib.TokenID = name;
//update name of sln and csproj.
name = name.replace(/(\.\s|\s\.|\s+|\.+)/g, '_'); //make it a ligitamate name
prev_name = prev_name.replace(/(\.\s|\s\.|\s+|\.+)/g, '_');
@@ -104,7 +108,7 @@ module.exports.prototype = {
var cleanedPage = raw.replace(/^\uFEFF/i, '');
var csproj = new et.ElementTree(et.XML(cleanedPage));
prev_name = csproj.find('.//RootNamespace').text;
- if (prev_name != pkg) {
+ if(prev_name != pkg) {
//console.log("Updating package name from " + prev_name + " to " + pkg);
//CordovaAppProj.csproj
csproj.find('.//RootNamespace').text = pkg;
@@ -133,6 +137,9 @@ module.exports.prototype = {
var appCS = fs.readFileSync(path.join(this.wp8_proj_dir, 'App.xaml.cs'), 'utf-8');
fs.writeFileSync(path.join(this.wp8_proj_dir, 'App.xaml.cs'), appCS.replace(namespaceRegEx, 'namespace ' + pkg), 'utf-8');
}
+
+ //Write out manifest
+ fs.writeFileSync(this.manifest_path, manifest.write({indent: 4}), 'utf-8');
},
// Returns the platform-specific www directory.
www_dir:function() {
@@ -140,17 +147,17 @@ module.exports.prototype = {
},
// copies the app www folder into the wp8 project's www folder and updates the csproj file.
update_www:function() {
- var projectRoot = util.isCordova(this.wp8_proj_dir);
- var project_www = util.projectWww(projectRoot);
+ var project_root = util.isCordova(this.wp8_proj_dir);
+ var project_www = util.projectWww(project_root);
// remove stock platform assets
shell.rm('-rf', this.www_dir());
// copy over all app www assets
shell.cp('-rf', project_www, this.wp8_proj_dir);
- var custom_path = config.has_custom_path(projectRoot, 'wp8');
+ // copy over wp8 lib's cordova.js
var lib_path = path.join(util.libDirectory, 'wp8', 'cordova', require('../../platforms').wp8.version);
+ var custom_path = config.has_custom_path(project_root, 'wp8');
if (custom_path) lib_path = custom_path;
- // copy over wp8 lib's cordova.js
var cordovajs_path = path.join(lib_path, 'templates', 'standalone', 'www', 'cordova.js');
fs.writeFileSync(path.join(this.www_dir(), 'cordova.js'), fs.readFileSync(cordovajs_path, 'utf-8'), 'utf-8');
this.update_csproj();
@@ -197,21 +204,17 @@ module.exports.prototype = {
folder_contents:function(name, dir) {
var results = [];
var folder_dir = fs.readdirSync(dir);
- for(item in folder_dir)
- {
+ for(item in folder_dir) {
var stat = fs.statSync(path.join(dir, folder_dir[item]));
// means its a folder?
- if(stat.size == 0)
- {
+ if(stat.size == 0) {
var sub_dir = this.folder_contents(path.join(name, folder_dir[item]), path.join(dir, folder_dir[item]));
//Add all subfolder item paths
- for(sub_item in sub_dir)
- {
+ for(sub_item in sub_dir) {
results.push(sub_dir[sub_item]);
}
}
- else
- {
+ else {
results.push(path.join(name, folder_dir[item]));
}
}