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');
