Summary
Add declarative plugin.json manifest support for plugins, inspired by LuCLI's module.json format. This enables future features (service registration, middleware, semver deps) without breaking existing plugins.
Proposed Manifest Format
{
"name": "authenticateThis",
"version": "2.1.0",
"description": "Authentication plugin for Wheels",
"author": "Plugin Author",
"wheelsVersion": ">=3.0.0 <4.0.0",
"mixin": "controller",
"dependencies": {
"someOtherPlugin": ">=1.0.0"
},
"services": {
"auth": {
"class": "AuthService",
"scope": "singleton"
}
},
"middleware": ["AuthMiddleware"]
}
Changes
- Extend
$pluginMetaData() to look for plugin.json in the plugin directory
- Parse manifest and populate plugin metadata from it
- Fall back to existing CFC metadata /
box.json if plugin.json not present
- Existing plugins with no manifest continue to work unchanged
Files
vendor/wheels/Plugins.cfc:184-196 — extend $pluginMetaData()
Phase
Phase 1 — Cleanup & Foundation (3.x, no breaking changes)
Reference
Summary
Add declarative
plugin.jsonmanifest support for plugins, inspired by LuCLI'smodule.jsonformat. This enables future features (service registration, middleware, semver deps) without breaking existing plugins.Proposed Manifest Format
{ "name": "authenticateThis", "version": "2.1.0", "description": "Authentication plugin for Wheels", "author": "Plugin Author", "wheelsVersion": ">=3.0.0 <4.0.0", "mixin": "controller", "dependencies": { "someOtherPlugin": ">=1.0.0" }, "services": { "auth": { "class": "AuthService", "scope": "singleton" } }, "middleware": ["AuthMiddleware"] }Changes
$pluginMetaData()to look forplugin.jsonin the plugin directorybox.jsonifplugin.jsonnot presentFiles
vendor/wheels/Plugins.cfc:184-196— extend$pluginMetaData()Phase
Phase 1 — Cleanup & Foundation (3.x, no breaking changes)
Reference
cli/lucli/module.json