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/b649373b
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugman/tree/b649373b
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugman/diff/b649373b

Branch: refs/heads/future
Commit: b649373bf394855677d5cacc62cd869ba4d37b95
Parents: 6be1ac8
Author: Braden Shepherdson <[email protected]>
Authored: Tue Mar 26 12:05:31 2013 -0400
Committer: Tim Kim <[email protected]>
Committed: Mon Apr 8 17:00:20 2013 -0700

----------------------------------------------------------------------
 plugman.js |   50 ++++++++++++++++++++++++++++++++++----------------
 1 files changed, 34 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/b649373b/plugman.js
----------------------------------------------------------------------
diff --git a/plugman.js b/plugman.js
index f0ad02c..f129247 100755
--- a/plugman.js
+++ b/plugman.js
@@ -39,6 +39,9 @@ var known_opts = { 'platform' : [ 'ios', 'android', 
'blackberry' ,'www' ]
             , 'project' : path
             , 'plugin' : [String, path, url]
             , 'remove' : Boolean
+            , 'install' : Boolean
+            , 'uninstall' : Boolean
+            , 'fetch' : Boolean
             , 'list' : Boolean
             , 'v' : Boolean
             , 'debug' : Boolean
@@ -82,10 +85,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 {
@@ -102,20 +111,14 @@ else {
 
 function printUsage() {
     platforms = known_opts.platform.join('|');
-<<<<<<< HEAD
-    console.error('Usage\n---------');
-    console.error('Add a plugin:\n\t' + package.name + ' --platform <'+ 
platforms +'> --project <directory> --variable 
<preference_name>="<substituion>" --plugin <directory|git-url|name>\n');
-    console.error('Remove a plugin:\n\t' + package.name + ' --remove 
--platform <'+ platforms +'> --project <directory> --plugin 
<directory|git-url|name>\n');
-    console.error('List plugins:\n\t' + package.name + ' --list\n');
-    process.exit(1);
-=======
     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');
->>>>>>> --prepare with ported JS installation, cache plugins locally
 }
 
 function execAction(action, platform, project_dir, plugin_dir, cli_variables) {
@@ -161,9 +164,7 @@ function execAction(action, platform, project_dir, 
plugin_dir, cli_variables) {
     }
 }
 
-function handlePlugin(action, platform, project_dir, plugin_dir, 
cli_variables) {
-    var plugin_xml_path, async = false;
-
+function fetchPlugin(plugin_dir) {
     // Ensure the containing directory exists.
     shell.mkdir('-p', plugins_dir);
 
@@ -183,6 +184,22 @@ function handlePlugin(action, platform, project_dir, 
plugin_dir, cli_variables)
 
         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, plugin_dir, 
cli_variables) 
+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)) {
@@ -190,7 +207,8 @@ function handlePlugin(action, platform, project_dir, 
plugin_dir, cli_variables)
         async = true;
         plugins.getPluginInfo(plugin_dir,
             function(plugin_info) {
-                execAction(action, platform, project_dir, 
plugins.clonePluginGitRepo(plugin_info.url), cli_variables);
+                execAction(action, platform, project_dir, 
plugins.clonePluginGitRepo(plugin_info.url), plugins_dir);
+                //execAction(action, platform, project_dir, 
plugins.clonePluginGitRepo(plugin_info.url), cli_variables);
             },
             function(e) {
                 throw new Error(action + ' failed. "' + plugin_xml_path + '" 
not found');

Reply via email to