From dd7571a7808676c8063a4983b9c6687dfaf03a09 Mon Sep 17 00:00:00 2001 From: Lucas Fernandes Nogueira Date: Wed, 7 Feb 2024 22:26:16 -0300 Subject: [PATCH] fix(core): do not generate files if plugin has no permissions (#8815) --- .changes/handle-empty-permissions.md | 6 ++++++ core/tauri-plugin/src/build/mod.rs | 13 +++++++++++-- core/tauri-utils/src/acl/build.rs | 5 ++++- 3 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 .changes/handle-empty-permissions.md diff --git a/.changes/handle-empty-permissions.md b/.changes/handle-empty-permissions.md new file mode 100644 index 000000000..5e47234fe --- /dev/null +++ b/.changes/handle-empty-permissions.md @@ -0,0 +1,6 @@ +--- +"tauri-plugin": patch:enhance +"tauri-utils": patch:enhance +--- + +Do not generate JSON schema and markdown reference file if the plugin does not define any permissions and delete those files if they exist. diff --git a/core/tauri-plugin/src/build/mod.rs b/core/tauri-plugin/src/build/mod.rs index 60f99da0d..a3f0dd297 100644 --- a/core/tauri-plugin/src/build/mod.rs +++ b/core/tauri-plugin/src/build/mod.rs @@ -101,8 +101,17 @@ impl<'a> Builder<'a> { println!("cargo:rerun-if-changed=permissions"); let permissions = acl::build::define_permissions("./permissions/**/*.*", &name, &out_dir)?; - acl::build::generate_schema(&permissions, "./permissions")?; - acl::build::generate_docs(&permissions, &autogenerated)?; + if permissions.is_empty() { + let _ = std::fs::remove_file(format!( + "./permissions/{}/{}", + acl::build::PERMISSION_SCHEMAS_FOLDER_NAME, + acl::build::PERMISSION_SCHEMA_FILE_NAME + )); + let _ = std::fs::remove_file(autogenerated.join(acl::build::PERMISSION_DOCS_FILE_NAME)); + } else { + acl::build::generate_schema(&permissions, "./permissions")?; + acl::build::generate_docs(&permissions, &autogenerated)?; + } if let Some(global_scope_schema) = self.global_scope_schema { acl::build::define_global_scope_schema(global_scope_schema, &name, &out_dir)?; diff --git a/core/tauri-utils/src/acl/build.rs b/core/tauri-utils/src/acl/build.rs index 9c3d4f16b..37297c5d9 100644 --- a/core/tauri-utils/src/acl/build.rs +++ b/core/tauri-utils/src/acl/build.rs @@ -38,6 +38,9 @@ pub const PERMISSION_SCHEMAS_FOLDER_NAME: &str = "schemas"; /// Known filename of the permission schema JSON file pub const PERMISSION_SCHEMA_FILE_NAME: &str = "schema.json"; +/// Known filename of the permission documentation file +pub const PERMISSION_DOCS_FILE_NAME: &str = "reference.md"; + /// Allowed capability file extensions const CAPABILITY_FILE_EXTENSIONS: &[&str] = &["json", "toml"]; @@ -281,7 +284,7 @@ pub fn generate_docs(permissions: &[PermissionFile], out_dir: &Path) -> Result<( } } - let reference_path = out_dir.join("reference.md"); + let reference_path = out_dir.join(PERMISSION_DOCS_FILE_NAME); if docs != read_to_string(&reference_path).unwrap_or_default() { std::fs::write(reference_path, docs).map_err(Error::WriteFile)?; }