Add plugin host architecture and Storm Sewer add-on package
Generic plugin runtime (src/plugin/, HostSession, per-tab plugin_state, command router). QGIS-style add-on layout with plugin.toml and single PluginRegistration. Storm Sewer refactored as reference consumer with dispatch.rs, catchments, LandXML, headless tests (43 passing). Core update.rs decoupled from storm_sewer via CadCommand object-pick hooks. Docs: plugin-architecture.md, plugin-template, PR and issue-78 reply drafts.
This commit is contained in:
parent
1199895f0e
commit
e46701456f
66 changed files with 4538 additions and 141 deletions
4
build.rs
4
build.rs
|
|
@ -7,6 +7,7 @@
|
|||
// Rules for a directory to be picked up:
|
||||
// • Located directly in src/modules/
|
||||
// • Contains a mod.rs file
|
||||
// • Does NOT contain plugin.toml (add-ons register via BuiltinPlugin::ribbon)
|
||||
// • Defines a pub struct {PascalCase}Module implementing CadModule
|
||||
// (unit struct — no ::new() needed)
|
||||
//
|
||||
|
|
@ -38,7 +39,8 @@ fn main() {
|
|||
}
|
||||
let name = entry.file_name().into_string().ok()?;
|
||||
let mod_file = mods_dir.join(&name).join("mod.rs");
|
||||
if mod_file.exists() {
|
||||
let plugin_toml = mods_dir.join(&name).join("plugin.toml");
|
||||
if mod_file.exists() && !plugin_toml.exists() {
|
||||
Some(name)
|
||||
} else {
|
||||
None
|
||||
|
|
|
|||
Loading…
Reference in a new issue