opscode/chef — pull request #1186 by danielsdeleo (2013-12-19 20:26:27+00:00)
Title: Add support for loading a static list of plugin files.

If a file ~/.chef/plugin_manifest.json is present, knife will read a
list of plugins to load from that file rather than scanning all rubygems
for knife plugins, which can take a long time depending on hardware,
number of gems, rubygems version, ruby version, etc.

The format of the plugin_manifest.json file is:

```json
{ "plugins": {
"knife-ec2": {
"paths" => [
"/home/alice/.rubymanagerthing/gems/knife-ec2-x.y.z/lib/chef/knife/ec2_server_create.rb",
"/home/alice/.rubymanagerthing/gems/knife-ec2-x.y.z/lib/chef/knife/ec2_server_delete.rb"
]
}
}
}
```

This leaves us opportunity in the future to modify the format in
accordance with any behavior changes in knife. For example, if knife
were modified to load commands on-demand, the format could be adapted to
support this (and cache help information so `knife -h` would run
quickly).

In the near-term this should be regarded as an experimental feature, and
users are on their own for managing the content of the file.