From 46935212b61da44dc82dfeb803fceebf5659f7b7 Mon Sep 17 00:00:00 2001 From: Tony <68118705+Legend-Master@users.noreply.github.com> Date: Tue, 12 Nov 2024 22:44:37 +0800 Subject: [PATCH] fix: parse json5 capability files when `config-json5` is enabled (#11658) --- .changes/json5-capability-files.md | 6 ++++++ crates/tauri-utils/src/acl/build.rs | 7 ++++++- crates/tauri-utils/src/acl/capability.rs | 2 ++ crates/tauri-utils/src/acl/mod.rs | 5 +++++ 4 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 .changes/json5-capability-files.md diff --git a/.changes/json5-capability-files.md b/.changes/json5-capability-files.md new file mode 100644 index 000000000..b0fe7fb54 --- /dev/null +++ b/.changes/json5-capability-files.md @@ -0,0 +1,6 @@ +--- +"tauri": patch:bug +"tauri-utils": patch:bug +--- + +Fix `.json5` capability files not recognized even with `config-json5` feature enabled diff --git a/crates/tauri-utils/src/acl/build.rs b/crates/tauri-utils/src/acl/build.rs index d32eb0232..12ce4e9e0 100644 --- a/crates/tauri-utils/src/acl/build.rs +++ b/crates/tauri-utils/src/acl/build.rs @@ -34,7 +34,12 @@ pub const PERMISSION_FILE_EXTENSIONS: &[&str] = &["json", "toml"]; pub const PERMISSION_DOCS_FILE_NAME: &str = "reference.md"; /// Allowed capability file extensions -const CAPABILITY_FILE_EXTENSIONS: &[&str] = &["json", "toml"]; +const CAPABILITY_FILE_EXTENSIONS: &[&str] = &[ + "json", + #[cfg(feature = "config-json5")] + "json5", + "toml", +]; /// Known folder name of the capability schemas const CAPABILITIES_SCHEMA_FOLDER_NAME: &str = "schemas"; diff --git a/crates/tauri-utils/src/acl/capability.rs b/crates/tauri-utils/src/acl/capability.rs index 9ac56f3ed..d5aeb3a79 100644 --- a/crates/tauri-utils/src/acl/capability.rs +++ b/crates/tauri-utils/src/acl/capability.rs @@ -267,6 +267,8 @@ impl CapabilityFile { let file: Self = match ext.as_str() { "toml" => toml::from_str(&capability_file)?, "json" => serde_json::from_str(&capability_file)?, + #[cfg(feature = "config-json5")] + "json5" => json5::from_str(&capability_file)?, _ => return Err(super::Error::UnknownCapabilityFormat(ext)), }; Ok(file) diff --git a/crates/tauri-utils/src/acl/mod.rs b/crates/tauri-utils/src/acl/mod.rs index 40e475fde..7821b7c06 100644 --- a/crates/tauri-utils/src/acl/mod.rs +++ b/crates/tauri-utils/src/acl/mod.rs @@ -103,6 +103,11 @@ pub enum Error { #[error("failed to parse JSON: {0}")] Json(#[from] serde_json::Error), + /// Invalid JSON5 encountered + #[cfg(feature = "config-json5")] + #[error("failed to parse JSON5: {0}")] + Json5(#[from] json5::Error), + /// Invalid permissions file format #[error("unknown permission format {0}")] UnknownPermissionFormat(String),