You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by br...@apache.org on 2013/03/26 17:06:06 UTC

git commit: Rewire commands: Split into --fetch, --install, --uninstall, --remove.

Updated Branches:
  refs/heads/future 57f92736e -> dde313cbc


Rewire commands: Split into --fetch, --install, --uninstall, --remove.


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

Branch: refs/heads/future
Commit: dde313cbcfd5073707dd5b9a7d0caf66ed981b16
Parents: 57f9273
Author: Braden Shepherdson <br...@gmail.com>
Authored: Tue Mar 26 12:05:31 2013 -0400
Committer: Braden Shepherdson <br...@gmail.com>
Committed: Tue Mar 26 12:05:31 2013 -0400

----------------------------------------------------------------------
 plugman.js |   42 +++++++++++++++++++++++++++++++++---------
 1 files changed, 33 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/dde313cb/plugman.js
----------------------------------------------------------------------
diff --git a/plugman.js b/plugman.js
index 7e6e52b..ad4be96 100755
--- a/plugman.js
+++ b/plugman.js
@@ -39,6 +39,9 @@ var known_opts = { 'platform' : [ 'ios', 'android', 'bb10' ,'www' ]
             , 'project' : path
             , 'plugin' : [String, path, url]
             , 'remove' : Boolean
+            , 'install' : Boolean
+            , 'uninstall' : Boolean
+            , 'fetch' : Boolean
             , 'list' : Boolean
             , 'v' : Boolean
             , 'debug' : Boolean
@@ -81,10 +84,16 @@ else if (cli_opts.list) {
 else if (cli_opts.prepare && cli_opts.project && cli_opts.www) {
     plugin_loader.handlePrepare(cli_opts.project, plugins_dir, cli_opts.www, cli_opts.platform);
 }
+else if (cli_opts.remove) {
+    removePlugin(cli_opts.plugin);
+}
+else if (cli_opts.fetch) {
+    fetchPlugin(cli_opts.plugin);
+}
 else if (!cli_opts.platform || !cli_opts.project || !cli_opts.plugin) {
     printUsage();
 }
-else if (cli_opts.remove) {
+else if (cli_opts.uninstall) {
     handlePlugin('uninstall', cli_opts.platform, cli_opts.project, cli_opts.plugin);
 }
 else {
@@ -94,11 +103,13 @@ else {
 function printUsage() {
     platforms = known_opts.platform.join('|');
     console.log('Usage\n---------');
-    console.log('Add a plugin:\n\t' + package.name + ' --platform <'+ platforms +'> --project <directory> --plugin <directory|git-url|name>\n');
-    console.log('Remove a plugin:\n\t' + package.name + ' --remove --platform <'+ platforms +'> --project <directory> --plugin <directory|git-url|name>\n');
-    console.log('List plugins:\n\t' + package.name + ' --list\n');
+    console.log('Fetch a plugin:\n\t' + package.name + ' --fetch --plugin <directory|git-url|name> [--plugins_dir <directory>]\n');
+    console.log('Install an already fetched plugin:\n\t' + package.name + ' --platform <'+ platforms +'> --project <directory> --plugin <name> [--plugins_dir <directory>]\n');
+    console.log('Uninstall a plugin:\n\t' + package.name + ' --remove --platform <'+ platforms +'> --project <directory> --plugin <name> [--plugins_dir <directory>]\n');
+    console.log('Delete the local copy of a plugin:\n\t' + package.name + ' --remove --plugin <name> [--plugins_dir <directory>]\n');
+    console.log('List plugins:\n\t' + package.name + ' --list [--plugins_dir <directory>]\n');
     console.log('Prepare project:\n\t' + package.name + ' --prepare --platform <ios|android|bb10> --project <directory> --www <directory> [--plugins_dir <directory>]');
-    console.log('\n\t--plugins_dir defaults to <project>/cordova/plugins, but can be any directory containing a subdirectory for each plugin');
+    console.log('\n--plugins_dir defaults to <project>/cordova/plugins, but can be any directory containing a subdirectory for each plugin');
 }
 
 function execAction(action, platform, project_dir, plugin_dir) {
@@ -112,9 +123,7 @@ function execAction(action, platform, project_dir, plugin_dir) {
     console.log('plugin ' + action + 'ed');
 }
 
-function handlePlugin(action, platform, project_dir, plugin_dir) {
-    var plugin_xml_path, async = false;
-
+function fetchPlugin(plugin_dir) {
     // Ensure the containing directory exists.
     shell.mkdir('-p', plugins_dir);
 
@@ -134,6 +143,21 @@ function handlePlugin(action, platform, project_dir, plugin_dir) {
 
         plugin_dir = dest;
     }
+}
+
+function removePlugin(name) {
+    shell.rm('-rf', path.join(plugins_dir, cli_opts.plugin));
+    console.log('Plugin ' + cli_opts.plugin + ' deleted.');
+}
+
+function handlePlugin(action, platform, project_dir, name) {
+    var plugin_xml_path, async;
+
+    // Check that the plugin has already been fetched.
+    var plugin_dir = path.join(plugins_dir, name);
+    if (!fs.existsSync(plugin_dir)) {
+        throw new Error('Plugin ' + name + ' not found. You may need to --fetch it.');
+    }
 
     plugin_xml_path = path.join(plugin_dir, 'plugin.xml');
     if (!fs.existsSync(plugin_xml_path)) {
@@ -141,7 +165,7 @@ function handlePlugin(action, platform, project_dir, plugin_dir) {
         async = true;
         plugins.getPluginInfo(plugin_dir,
             function(plugin_info) {
-                execAction(action, platform, project_dir, plugins.clonePluginGitRepo(plugin_info.url));
+                execAction(action, platform, project_dir, plugins.clonePluginGitRepo(plugin_info.url), plugins_dir);
             },
             function(e) {
                 throw new Error(action + ' failed. "' + plugin_xml_path + '" not found');