In this branch, Plugman is undergoing major changes to make the split of responsibilities between plugman and cordova-cli clear.
- cordova-cli is responsible for handling multiple platforms. That means it has the separate
platforms/{ios,android,etc}
directories, a top-levelwww/
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.
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.
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.
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.
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.)
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 cordova_plugins.json
file.
cordova.js
in this new model will have code that reads this cordova_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.