From f7acb061e4d1ecdbfe182793587632d7ba6d8eff Mon Sep 17 00:00:00 2001 From: Lucas Fernandes Nogueira Date: Thu, 3 Mar 2022 17:40:25 -0300 Subject: [PATCH] feat(cli): use plugin::Builder syntax on the plugin template (#3606) --- .changes/cli.rs-template-plugin-builder.md | 6 +++ .../examples/vanilla/src-tauri/src/main.rs | 2 +- .../cli/templates/plugin/backend/src/lib.rs | 12 ++---- .../plugin/with-api/Cargo.crate-manifest | 1 - .../examples/svelte-app/src-tauri/src/main.rs | 2 +- .../cli/templates/plugin/with-api/src/lib.rs | 42 +++++++------------ 6 files changed, 26 insertions(+), 39 deletions(-) create mode 100644 .changes/cli.rs-template-plugin-builder.md diff --git a/.changes/cli.rs-template-plugin-builder.md b/.changes/cli.rs-template-plugin-builder.md new file mode 100644 index 000000000..b6e62ebac --- /dev/null +++ b/.changes/cli.rs-template-plugin-builder.md @@ -0,0 +1,6 @@ +--- +"cli.rs": patch +"cli.js": patch +--- + +Change the `plugin init` templates to use the new `tauri::plugin::Builder` syntax. diff --git a/tooling/cli/templates/plugin/backend/examples/vanilla/src-tauri/src/main.rs b/tooling/cli/templates/plugin/backend/examples/vanilla/src-tauri/src/main.rs index dca030873..d052653bd 100644 --- a/tooling/cli/templates/plugin/backend/examples/vanilla/src-tauri/src/main.rs +++ b/tooling/cli/templates/plugin/backend/examples/vanilla/src-tauri/src/main.rs @@ -5,7 +5,7 @@ fn main() { tauri::Builder::default() - .plugin(tauri_plugin_{{ plugin_name_snake_case }}::YourPlugin::default()) + .plugin(tauri_plugin_{{ plugin_name_snake_case }}::init()) .run(tauri::generate_context!()) .expect("error while running tauri application"); } diff --git a/tooling/cli/templates/plugin/backend/src/lib.rs b/tooling/cli/templates/plugin/backend/src/lib.rs index 6d8ad8393..99fbfbaa6 100755 --- a/tooling/cli/templates/plugin/backend/src/lib.rs +++ b/tooling/cli/templates/plugin/backend/src/lib.rs @@ -1,13 +1,9 @@ {{#if license_header}} {{ license_header }} {{/if}} -use tauri::{plugin::Plugin, Runtime}; +use tauri::{plugin::{Builder, TauriPlugin}, runtime::Runtime}; -#[derive(Default)] -pub struct YourPlugin {} - -impl Plugin for YourPlugin { - fn name(&self) -> &'static str { - "{{ plugin_name }}" - } +/// Initializes the plugin. +pub fn init() -> TauriPlugin { + Builder::new("{{ plugin_name }}").build() } diff --git a/tooling/cli/templates/plugin/with-api/Cargo.crate-manifest b/tooling/cli/templates/plugin/with-api/Cargo.crate-manifest index 5ef4b0fff..fc677db9b 100644 --- a/tooling/cli/templates/plugin/with-api/Cargo.crate-manifest +++ b/tooling/cli/templates/plugin/with-api/Cargo.crate-manifest @@ -10,5 +10,4 @@ exclude = ["/examples", "/webview-dist", "/webview-src", "node_modules"] [dependencies] tauri = {{{ tauri_dep }}} serde = "1.0" -serde_json = "1.0" thiserror = "1.0" diff --git a/tooling/cli/templates/plugin/with-api/examples/svelte-app/src-tauri/src/main.rs b/tooling/cli/templates/plugin/with-api/examples/svelte-app/src-tauri/src/main.rs index 3484c5abe..cafd857d9 100644 --- a/tooling/cli/templates/plugin/with-api/examples/svelte-app/src-tauri/src/main.rs +++ b/tooling/cli/templates/plugin/with-api/examples/svelte-app/src-tauri/src/main.rs @@ -5,7 +5,7 @@ fn main() { tauri::Builder::default() - .plugin(tauri_plugin_{{ plugin_name_snake_case }}::YourPlugin::default()) + .plugin(tauri_plugin_{{ plugin_name_snake_case }}::init()) .run(tauri::generate_context!()) .expect("failed to run app"); } diff --git a/tooling/cli/templates/plugin/with-api/src/lib.rs b/tooling/cli/templates/plugin/with-api/src/lib.rs index 1f3ba65c7..5b535871c 100644 --- a/tooling/cli/templates/plugin/with-api/src/lib.rs +++ b/tooling/cli/templates/plugin/with-api/src/lib.rs @@ -3,8 +3,11 @@ {{/if}} use serde::{ser::Serializer, Serialize}; -use serde_json::Value as JsonValue; -use tauri::{command, plugin::Plugin, AppHandle, Invoke, Manager, Runtime, State, Window}; +use tauri::{ + command, + plugin::{Builder, TauriPlugin}, + AppHandle, Manager, Runtime, State, Window, +}; use std::{collections::HashMap, sync::Mutex}; @@ -38,30 +41,13 @@ async fn execute( Ok("success".to_string()) } -/// Tauri plugin. -pub struct YourPlugin { - invoke_handler: Box) + Send + Sync>, -} - -impl Default for YourPlugin { - fn default() -> Self { - Self { - invoke_handler: Box::new(tauri::generate_handler![execute]), - } - } -} - -impl Plugin for YourPlugin { - fn name(&self) -> &'static str { - "{{ plugin_name }}" - } - - fn initialize(&mut self, app: &AppHandle, _config: JsonValue) -> tauri::plugin::Result<()> { - app.manage(MyState::default()); - Ok(()) - } - - fn extend_api(&mut self, message: Invoke) { - (self.invoke_handler)(message) - } +/// Initializes the plugin. +pub fn init() -> TauriPlugin { + Builder::new("{{ plugin_name }}") + .invoke_handler(tauri::generate_handler![execute]) + .setup(|app| { + app.manage(MyState::default()); + Ok(()) + }) + .build() }