plugin.toml manifest and validator #39

Closed
opened 2026-08-22 19:00:30 +01:00 by joshquinlan · 2 comments
Owner

Sections plugin, commands, packages, units, binds, menu, shell, theme, hooks, migrations, settings; bash and QML validation with the same rules.

Sections plugin, commands, packages, units, binds, menu, shell, theme, hooks, migrations, settings; bash and QML validation with the same rules.
joshquinlan added this to the 5 Plugins milestone 2026-08-22 19:00:30 +01:00
Author
Owner

Landed on the plugin-core branch as 84986e8.

lib/plugin/manifest.sh reads a manifest through tomllib into
keyvalue facts (plugin_fact, plugin_keys,
plugin_named), accepting both [plugin] and bare top-level
keys the way the QML registry does. lib/plugin/validate.sh
holds one check per section, all of them run so a single pass
names every fault, and donbox plugin validate <dir> reports
them and exits 1. The rules match
shell/services/logic/PluginManifest.qml (id, kinds, entry
points, widget section) and add existence checks the shell
cannot make: commands.dir, units under units/, MOD+KEY binds
with actions, menu file, theme templates and appliers, hook
events from the design list, migrations dir, settings file, and
no symlink anywhere inside the plugin.

32 assertions in test/shell.d/plugin-validate-test.sh, one per
rule, plus plugins/board validating as shipped (it gained the
version the rules now require).

Landed on the `plugin-core` branch as 84986e8. `lib/plugin/manifest.sh` reads a manifest through tomllib into key<TAB>value facts (`plugin_fact`, `plugin_keys`, `plugin_named`), accepting both `[plugin]` and bare top-level keys the way the QML registry does. `lib/plugin/validate.sh` holds one check per section, all of them run so a single pass names every fault, and `donbox plugin validate <dir>` reports them and exits 1. The rules match `shell/services/logic/PluginManifest.qml` (id, kinds, entry points, widget section) and add existence checks the shell cannot make: commands.dir, units under units/, MOD+KEY binds with actions, menu file, theme templates and appliers, hook events from the design list, migrations dir, settings file, and no symlink anywhere inside the plugin. 32 assertions in `test/shell.d/plugin-validate-test.sh`, one per rule, plus `plugins/board` validating as shipped (it gained the `version` the rules now require).
Author
Owner

Integrated on master (plugin-core branch cherry-picked; lib/plugin/manifest.sh, validate.sh, bin/donbox-plugin-*, donbox hook). Closing.

Integrated on master (plugin-core branch cherry-picked; lib/plugin/manifest.sh, validate.sh, bin/donbox-plugin-*, donbox hook). Closing.
Sign in to join this conversation.
No description provided.