There is a need to have plugman look in places other than the registry when
fetching plugins by ID. This is particularly the case because <dependency>
plugins now have IDs only instead of specifying a URL.

Downstream distributions need this (e.g. IBM packages plugins with their
distro). But this would be nice for mobile-spec as well (dependency plugin
could just list IDs instead of plugin paths).

Idea #1:
Add a map to a project's .cordova/config.json with explicit ID -> URL
mappings. E.g.:
"plugin_map": {
  "org.apache.cordova.file": "file:///some/path",
  "org.apache.cordova.file-transfer": "http://git.com/url#hash";
}

Idea #2
Add the idea of "plugin search path"
e.g.:
.cordova/config.json
   "plugin_search_path": ["file:///my/local/plugins", "
http://my/custom/couch/db";, "<inherits>"]

Entries here can be:
  1. local directory where each subdirectory contains a plugin
  2. http:// to a couchdb of a custom registry
  3. <inherits>, which means prepend this list instead of replacing the
setting.


Idea #3
Allow the user to copy / symlink the plugin sources into a projects
plugins/ directory. The directory names in here would need to be the plugin
IDs. When a request to install a plugin is made, plugman will first check
if it already exists within plugins/, and if so, uses that source. It would
also need to know not to delete the directory on plugin rm.



#1 is nice because it's simple, but may not be super convenient (since you
need to explicitly add each plugin). It's also the only suggestion that
allows you to map an ID to a custom git URL
#2 will work well for plugin collections, but may be annoying if you just
want to override a single plugin location.
#3 is arguably the most flexible since it leaves the fetching completely up
to the user. It may encourage people to muck with their plugins/ to the
point of breaking their project though. (e.g. they may delete plugins that
are installed)


I think I'd lean towards allowing both #1 and #2.

Reply via email to