Skip to content

Commit dd7571a

Browse files
authored
fix(core): do not generate files if plugin has no permissions (#8815)
1 parent aa06a05 commit dd7571a

3 files changed

Lines changed: 21 additions & 3 deletions

File tree

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"tauri-plugin": patch:enhance
3+
"tauri-utils": patch:enhance
4+
---
5+
6+
Do not generate JSON schema and markdown reference file if the plugin does not define any permissions and delete those files if they exist.

‎core/tauri-plugin/src/build/mod.rs‎

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,17 @@ impl<'a> Builder<'a> {
101101
println!("cargo:rerun-if-changed=permissions");
102102
let permissions = acl::build::define_permissions("./permissions/**/*.*", &name, &out_dir)?;
103103

104-
acl::build::generate_schema(&permissions, "./permissions")?;
105-
acl::build::generate_docs(&permissions, &autogenerated)?;
104+
if permissions.is_empty() {
105+
let _ = std::fs::remove_file(format!(
106+
"./permissions/{}/{}",
107+
acl::build::PERMISSION_SCHEMAS_FOLDER_NAME,
108+
acl::build::PERMISSION_SCHEMA_FILE_NAME
109+
));
110+
let _ = std::fs::remove_file(autogenerated.join(acl::build::PERMISSION_DOCS_FILE_NAME));
111+
} else {
112+
acl::build::generate_schema(&permissions, "./permissions")?;
113+
acl::build::generate_docs(&permissions, &autogenerated)?;
114+
}
106115

107116
if let Some(global_scope_schema) = self.global_scope_schema {
108117
acl::build::define_global_scope_schema(global_scope_schema, &name, &out_dir)?;

‎core/tauri-utils/src/acl/build.rs‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ pub const PERMISSION_SCHEMAS_FOLDER_NAME: &str = "schemas";
3838
/// Known filename of the permission schema JSON file
3939
pub const PERMISSION_SCHEMA_FILE_NAME: &str = "schema.json";
4040

41+
/// Known filename of the permission documentation file
42+
pub const PERMISSION_DOCS_FILE_NAME: &str = "reference.md";
43+
4144
/// Allowed capability file extensions
4245
const CAPABILITY_FILE_EXTENSIONS: &[&str] = &["json", "toml"];
4346

@@ -281,7 +284,7 @@ pub fn generate_docs(permissions: &[PermissionFile], out_dir: &Path) -> Result<(
281284
}
282285
}
283286

284-
let reference_path = out_dir.join("reference.md");
287+
let reference_path = out_dir.join(PERMISSION_DOCS_FILE_NAME);
285288
if docs != read_to_string(&reference_path).unwrap_or_default() {
286289
std::fs::write(reference_path, docs).map_err(Error::WriteFile)?;
287290
}

0 commit comments

Comments
 (0)