Bläddra i källkod

feat(tauri) allow plugin config on tauri.conf.json (#824)

Lucas Fernandes Nogueira 5 år sedan
förälder
incheckning
56f819d2ef

+ 12 - 0
cli/tauri.js/src/types/config.schema.json

@@ -259,6 +259,18 @@
       },
       "type": "object"
     },
+    "plugins": {
+      "additionalProperties": {
+        "additionalProperties": {
+        },
+        "defaultProperties": [
+        ],
+        "type": "object"
+      },
+      "defaultProperties": [
+      ],
+      "type": "object"
+    },
     "tauri": {
       "additionalProperties": false,
       "defaultProperties": [

+ 5 - 0
cli/tauri.js/src/types/config.ts

@@ -292,6 +292,11 @@ export interface TauriConfig {
       active?: boolean
     }
   }
+  plugins?: {
+    [name: string]: {
+      [key: string]: any
+    }
+  }
 }
 
 export default TauriConfig

+ 12 - 0
cli/tauri.js/src/types/config.validator.ts

@@ -269,6 +269,18 @@ export const TauriConfigSchema = {
       },
       "type": "object"
     },
+    "plugins": {
+      "additionalProperties": {
+        "additionalProperties": {
+        },
+        "defaultProperties": [
+        ],
+        "type": "object"
+      },
+      "defaultProperties": [
+      ],
+      "type": "object"
+    },
     "tauri": {
       "additionalProperties": false,
       "defaultProperties": [

+ 14 - 0
tauri-api/src/config.rs

@@ -1,5 +1,6 @@
 use serde::de::{Deserializer, Error as DeError, Visitor};
 use serde::Deserialize;
+use serde_json::Value as JsonValue;
 
 use once_cell::sync::OnceCell;
 use std::collections::HashMap;
@@ -306,6 +307,8 @@ fn default_dev_path() -> String {
   "".to_string()
 }
 
+type JsonObject = HashMap<String, JsonValue>;
+
 /// The tauri.conf.json mapper.
 #[derive(PartialEq, Deserialize, Debug)]
 #[serde(rename_all = "camelCase")]
@@ -316,6 +319,16 @@ pub struct Config {
   /// The build configuration.
   #[serde(default = "default_build")]
   pub build: BuildConfig,
+  /// The plugins config.
+  #[serde(default)]
+  plugins: HashMap<String, JsonObject>,
+}
+
+impl Config {
+  /// Gets a plugin configuration.
+  pub fn plugin_config<S: AsRef<str>>(&self, plugin_name: S) -> Option<&JsonObject> {
+    self.plugins.get(plugin_name.as_ref())
+  }
 }
 
 fn default_tauri() -> TauriConfig {
@@ -431,6 +444,7 @@ mod test {
       build: BuildConfig {
         dev_path: String::from("../dist"),
       },
+      plugins: Default::default(),
     }
   }