Updated Branches: refs/heads/future [created] c770f5250
Add FUTURE.md describing the goals of this branch Project: http://git-wip-us.apache.org/repos/asf/cordova-plugman/repo Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugman/commit/c770f525 Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugman/tree/c770f525 Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugman/diff/c770f525 Branch: refs/heads/future Commit: c770f525073820abb30bc8861a4731030b7f1a58 Parents: adb5a88 Author: Braden Shepherdson <[email protected]> Authored: Tue Mar 19 16:39:44 2013 -0400 Committer: Braden Shepherdson <[email protected]> Committed: Tue Mar 19 16:39:44 2013 -0400 ---------------------------------------------------------------------- FUTURE.md | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 42 insertions(+), 0 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/c770f525/FUTURE.md ---------------------------------------------------------------------- diff --git a/FUTURE.md b/FUTURE.md new file mode 100644 index 0000000..6ff6884 --- /dev/null +++ b/FUTURE.md @@ -0,0 +1,42 @@ +# The Future of Plugman and CLI + +In this branch, Plugman is undergoing major changes to make the split of responsibilities between plugman and cordova-cli clear. + +## Responsibilities + +* cordova-cli is responsible for handling multiple platforms. That means it has the separate `platforms/{ios,android,etc}` directories, a top-level `www/` and so on. +* plugman is responsible for everything to do with plugins: fetching them, installing native code, installing JS code, keeping track of which ones are installed, removing them. + +## High-level changes + +Plugman now holds onto the code of the plugin, instead of cloning it into a temporary folder and throwing it away. By default it uses the `cordova/plugins` directory, but this can be overridden with `--plugins_dir=some/path`. This enables cordova-cli to use its top-level `plugins/` directory. + +See the next section for the changes to the commands and arguments. + +## Commands + +### `--fetch` + +Does the actual downloading of the plugin, from Github, the repository or the local disk. + +This supports cordova-cli, which will want to `--fetch` once into its top-level `plugins/` directory and then `--install` once for each platform. + +### `--install` + +Takes the previously fetched plugin files and installs them into a project. Needs a path to the plugin directory, the path to the project, and the platform, similar to now. + +Installs the native code and makes the necessary configuration changes. + +### `--uninstall` + +Removes the native code and undoes the configuration changes and so on. + +Care is required here not to remove permissions that are still needed by other plugins. (Read: config changes should be cleared and recreated from the currently installed plugins every time. This applies to permissions, `<plugin>` tags and so on.) + +### `--prepare` + +Takes over part of cordova-cli's `prepare` command. Copies all plugins' Javascript files (more precisely, those specified in `<js-module>` tags rather than `<asset>` tags) into `www/plugins/com.plugin.id/whatever/path/file.js` and constructs the `plugins.json` file. + +`cordova.js` in this new model will have code that reads this `plugins.json` file via XHR, loads the JS files for the plugins, and does their clobbers and merges. + +This is something of a change from the current cordova-cli method, but necessary because we won't be working with a fresh `cordova.js` file on each run anymore.
