fix(core): do not generate files if plugin has no permissions (#8815)

This commit is contained in:
Lucas Fernandes Nogueira 2024-02-07 22:26:16 -03:00 committed by GitHub
parent aa06a0534c
commit dd7571a780
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 21 additions and 3 deletions

View File

@ -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.

View File

@ -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)?;

View File

@ -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)?;
}