build.rs 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. // Copyright 2019-2024 Tauri Programme within The Commons Conservancy
  2. // SPDX-License-Identifier: Apache-2.0
  3. // SPDX-License-Identifier: MIT
  4. use std::{
  5. error::Error,
  6. fs::File,
  7. io::{BufWriter, Write},
  8. path::PathBuf,
  9. };
  10. use schemars::schema::RootSchema;
  11. pub fn main() -> Result<(), Box<dyn Error>> {
  12. let cap_schema = schemars::schema_for!(tauri_utils::acl::capability::Capability);
  13. let perm_schema = schemars::schema_for!(tauri_utils::acl::Permission);
  14. let scope_schema = schemars::schema_for!(tauri_utils::acl::Scopes);
  15. let crate_dir = PathBuf::from(std::env::var("CARGO_MANIFEST_DIR")?);
  16. write_schema_file(cap_schema, crate_dir.join("capability-schema.json"))?;
  17. write_schema_file(perm_schema, crate_dir.join("permission-schema.json"))?;
  18. write_schema_file(scope_schema, crate_dir.join("scope-schema.json"))?;
  19. Ok(())
  20. }
  21. fn write_schema_file(schema: RootSchema, outpath: PathBuf) -> Result<(), Box<dyn Error>> {
  22. let schema_str = serde_json::to_string_pretty(&schema).unwrap();
  23. let mut schema_file = BufWriter::new(File::create(outpath)?);
  24. write!(schema_file, "{schema_str}")?;
  25. Ok(())
  26. }