You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by an...@apache.org on 2013/03/04 20:32:51 UTC

[65/91] [abbrv] git commit: Adding in bb10 support

Adding in bb10 support


Project: http://git-wip-us.apache.org/repos/asf/cordova-plugman/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugman/commit/682895e7
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugman/tree/682895e7
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugman/diff/682895e7

Branch: refs/heads/master
Commit: 682895e792098900a968c6eb7a8855929dc4a462
Parents: 52892fd
Author: Tim Kim <ti...@adobe.com>
Authored: Wed Jan 16 13:07:19 2013 -0800
Committer: Tim Kim <ti...@adobe.com>
Committed: Wed Jan 16 15:22:11 2013 -0800

----------------------------------------------------------------------
 platforms/bb10.js |  146 ++++++++++++++++++++++++++++++++++++++++++++++++
 plugman.js        |    3 +-
 2 files changed, 148 insertions(+), 1 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/682895e7/platforms/bb10.js
----------------------------------------------------------------------
diff --git a/platforms/bb10.js b/platforms/bb10.js
new file mode 100644
index 0000000..012df40
--- /dev/null
+++ b/platforms/bb10.js
@@ -0,0 +1,146 @@
+var fs = require('fs')  // use existsSync in 0.6.x
+   , path = require('path')
+   , shell = require('shelljs')
+   , et = require('elementtree')
+   , getConfigChanges = require('../util/config-changes')
+
+   , assetsDir = 'www'  // relative path to project's web assets
+   , sourceDir = 'src'
+   , xml_helpers = require(path.join(__dirname, '..', 'util', 'xml-helpers'));
+
+
+exports.handlePlugin = function (action, project_dir, plugin_dir, plugin_et) {
+    var plugin_id = plugin_et._root.attrib['id']
+      , version = plugin_et._root.attrib['version']
+      , external_hosts = []
+      , i = 0
+      // look for assets in the plugin 
+      , assets = plugin_et.findall('./asset')
+      , platformTag = plugin_et.find('./platform[@name="bb10"]')
+      , sourceFiles = platformTag.findall('./source-file')
+      , libFiles = platformTag.findall('./library-file')
+      , configChanges = getConfigChanges(platformTag);
+
+    // find which config-files we're interested in
+    Object.keys(configChanges).forEach(function (configFile) {
+        if (!fs.existsSync(path.resolve(project_dir, configFile))) {
+            delete configChanges[configFile];
+        }
+    });
+
+    // move asset files
+    assets.forEach(function (asset) {
+        var srcPath = path.resolve(
+                        plugin_dir,
+                        asset.attrib['src']);
+
+        var targetPath = path.resolve(
+                            project_dir,
+                            assetsDir,
+                            asset.attrib['target']);
+
+        var stats = fs.statSync(srcPath);
+        if (action == 'install') {
+            if(stats.isDirectory()) {
+                shell.mkdir('-p', targetPath);
+                shell.cp('-R', srcPath, path.join(project_dir, assetsDir));
+            } else {
+                shell.cp(srcPath, targetPath);
+            }
+        } else {
+            shell.rm('-rf', targetPath);
+        }
+    });
+
+    // move source files
+    sourceFiles.forEach(function (sourceFile) {
+        var srcDir = path.resolve(project_dir,
+                                sourceFile.attrib['target-dir'])
+          , destFile = path.resolve(srcDir,
+                                path.basename(sourceFile.attrib['src']));
+
+        if (action == 'install') {
+            shell.mkdir('-p', srcDir);
+            var srcFile = srcPath(plugin_dir, sourceFile.attrib['src']);
+            shell.cp(srcFile, destFile);
+        } else {
+            fs.unlinkSync(destFile);
+            // check if directory is empty
+            var curDir = srcDir;
+            while(curDir !== project_dir + '/src') {
+                if(fs.readdirSync(curDir).length == 0) {
+                    fs.rmdirSync(curDir);
+                    curDir = path.resolve(curDir + '/..');
+                } else {
+                    // directory not empty...do nothing
+                    break;
+                }
+            }
+        }
+    })
+
+    // move library files
+    libFiles.forEach(function (libFile) {
+        var libDir = path.resolve(project_dir,
+                                libFile.attrib['target-dir'])
+
+        if (action == 'install') {
+            shell.mkdir('-p', libDir);
+            var src = path.resolve(plugin_dir, 'src/BlackBerry10',
+                                        libFile.attrib['src']),
+                dest = path.resolve(libDir,
+                                path.basename(libFile.attrib['src']));
+            
+            shell.cp(src, dest);
+        } else {
+            var destFile = path.resolve(libDir,
+                            path.basename(libFile.attrib['src']));
+
+            fs.unlinkSync(destFile);
+            // check if directory is empty
+            var files = fs.readdirSync(libDir);
+            if(files.length == 0) {
+                shell.rm('-rf', libDir);
+            }
+        }
+    })
+
+
+    // edit configuration files
+    Object.keys(configChanges).forEach(function (filename) {
+        var filepath = path.resolve(project_dir, filename),
+            xmlDoc = xml_helpers.parseElementtreeSync(filepath),
+            output;
+
+        configChanges[filename].forEach(function (configNode) {
+            var selector = configNode.attrib["parent"],
+                children = configNode.findall('*');
+
+            if( action == 'install') {
+                if (!xml_helpers.graftXML(xmlDoc, children, selector)) {
+                    throw new Error('failed to add children to ' + filename);
+                }
+            } else {
+                if (!xml_helpers.pruneXML(xmlDoc, children, selector)) {
+                    throw new Error('failed to remove children from' + filename);
+                }
+            }
+        });
+
+        output = xmlDoc.write({indent: 4});
+        output = output.replace(/\$PACKAGE_NAME/g, PACKAGE_NAME);
+        fs.writeFileSync(filepath, output);
+    });
+}
+
+
+function srcPath(pluginPath, filename) {
+    var prefix = /^src\/BlackBerry10/;
+
+    if (prefix.test(filename)) {
+        return path.resolve(pluginPath, filename);
+    } else {
+        return path.resolve(pluginPath, 'src/BlackBerry10', filename);
+    }
+}
+

http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/682895e7/plugman.js
----------------------------------------------------------------------
diff --git a/plugman.js b/plugman.js
index 2d44077..652396c 100755
--- a/plugman.js
+++ b/plugman.js
@@ -11,10 +11,11 @@ var fs = require('fs')
   , platform_modules = {
         'android': require('./platforms/android'),
         'ios': require('./platforms/ios'),
+        //'bb10': require('./platforms/bb10'),
         'www': require('./platforms/www')
     };
 
-var known_opts = { 'platform' : [ 'ios', 'android', 'www' ]
+var known_opts = { 'platform' : [ 'ios', 'android', 'bb10' ,'www' ]
             , 'project' : path
             , 'plugin' : [String, path, url]
             , 'remove' : Boolean