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]));
             }
         }