diff --git a/Cargo.lock b/Cargo.lock index 437b95e2..520cbc62 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -701,6 +701,10 @@ version = "0.1.0" [[package]] name = "coco_swagger" version = "0.1.0" +dependencies = [ + "core_model", + "plugin_interface", +] [[package]] name = "console" @@ -2119,6 +2123,9 @@ checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" [[package]] name = "plugin_interface" version = "0.1.0" +dependencies = [ + "core_model", +] [[package]] name = "plugin_manager" diff --git a/plugin_interface/Cargo.toml b/plugin_interface/Cargo.toml index 0643191e..ff0dda2f 100644 --- a/plugin_interface/Cargo.toml +++ b/plugin_interface/Cargo.toml @@ -7,3 +7,8 @@ edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] + + +[dependencies.core_model] +path = "../core_model" + diff --git a/plugin_interface/src/interface.rs b/plugin_interface/src/interface.rs new file mode 100644 index 00000000..c2f1db08 --- /dev/null +++ b/plugin_interface/src/interface.rs @@ -0,0 +1,13 @@ +use core_model::CocoConfig; + +pub trait PluginInterface { + /// name of plugins + /// should start with `coco.`, such as `coco.swagger` + fn name(&self) -> &'static str; + /// event for load plugin + fn on_plugin_load(&self) {} + /// event of unload plugin + fn on_plugin_unload(&self) {} + /// execute plugin + fn execute(&self, config: CocoConfig); +} diff --git a/plugin_interface/src/lib.rs b/plugin_interface/src/lib.rs index adc2917e..b854b525 100644 --- a/plugin_interface/src/lib.rs +++ b/plugin_interface/src/lib.rs @@ -1 +1,2 @@ -pub mod plugin_interface; +pub use interface::PluginInterface; +pub mod interface; diff --git a/plugin_interface/src/plugin_interface.rs b/plugin_interface/src/plugin_interface.rs deleted file mode 100644 index d1fbec98..00000000 --- a/plugin_interface/src/plugin_interface.rs +++ /dev/null @@ -1 +0,0 @@ -pub trait PluginInterface {} diff --git a/plugins/coco_swagger/Cargo.toml b/plugins/coco_swagger/Cargo.toml index a9e56e15..282a74f7 100644 --- a/plugins/coco_swagger/Cargo.toml +++ b/plugins/coco_swagger/Cargo.toml @@ -7,3 +7,9 @@ edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] + +[dependencies.core_model] +path = "../../core_model" + +[dependencies.plugin_interface] +path = "../../plugin_interface" diff --git a/plugins/coco_swagger/src/lib.rs b/plugins/coco_swagger/src/lib.rs new file mode 100644 index 00000000..9553c7aa --- /dev/null +++ b/plugins/coco_swagger/src/lib.rs @@ -0,0 +1,18 @@ +use core_model::CocoConfig; +use plugin_interface::PluginInterface; + +pub struct CocoSwagger {} + +impl PluginInterface for CocoSwagger { + fn name(&self) -> &'static str { + "coco.swagger" + } + + fn on_plugin_load(&self) {} + + fn on_plugin_unload(&self) {} + + fn execute(&self, config: CocoConfig) { + println!("{:?}", config); + } +} diff --git a/plugins/coco_swagger/src/main.rs b/plugins/coco_swagger/src/main.rs deleted file mode 100644 index e7a11a96..00000000 --- a/plugins/coco_swagger/src/main.rs +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - println!("Hello, world!"); -}