fix(cli,napi-derive): re-export types from shared crate (#1531)
* fix(cli,napi-derive): re-export types from shared crate * chore: publish - @napi-rs/cli@2.15.1-alpha.0 * Clippy fix * Fix memory testing
This commit is contained in:
parent
3b831f42f5
commit
3d48d4464b
16 changed files with 109 additions and 7 deletions
crates
|
@ -92,6 +92,7 @@ fn escape_json(src: &str) -> String {
|
|||
|
||||
impl ToString for TypeDef {
|
||||
fn to_string(&self) -> String {
|
||||
let pkg_name = std::env::var("CARGO_PKG_NAME").expect("CARGO_PKG_NAME is not set");
|
||||
let js_mod = if let Some(js_mod) = &self.js_mod {
|
||||
format!(", \"js_mod\": \"{}\"", js_mod)
|
||||
} else {
|
||||
|
@ -103,7 +104,8 @@ impl ToString for TypeDef {
|
|||
"".to_owned()
|
||||
};
|
||||
format!(
|
||||
r#"{{"kind": "{}", "name": "{}", "js_doc": "{}", "def": "{}"{}{}}}"#,
|
||||
r#"{}:{{"kind": "{}", "name": "{}", "js_doc": "{}", "def": "{}"{}{}}}"#,
|
||||
pkg_name,
|
||||
self.kind,
|
||||
self.name,
|
||||
escape_json(&self.js_doc),
|
||||
|
|
|
@ -67,8 +67,8 @@ pub fn napi(attr: RawStream, input: RawStream) -> RawStream {
|
|||
{
|
||||
// logic on first macro expansion
|
||||
#[cfg(feature = "type-def")]
|
||||
if let Ok(type_def_file) = env::var("TYPE_DEF_TMP_PATH") {
|
||||
if let Err(_e) = fs::remove_file(type_def_file) {
|
||||
if let Ok(ref type_def_file) = env::var("TYPE_DEF_TMP_PATH") {
|
||||
if let Err(_e) = remove_existed_type_def(type_def_file) {
|
||||
#[cfg(debug_assertions)]
|
||||
{
|
||||
println!("Failed to manipulate type def file: {:?}", _e);
|
||||
|
@ -432,3 +432,38 @@ fn replace_napi_attr_in_mod(
|
|||
None
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(all(feature = "type-def", not(feature = "noop")))]
|
||||
fn remove_existed_type_def(type_def_file: &str) -> std::io::Result<()> {
|
||||
use std::io::{BufRead, BufReader};
|
||||
|
||||
let pkg_name = std::env::var("CARGO_PKG_NAME").expect("CARGO_PKG_NAME is not set");
|
||||
if let Ok(content) = std::fs::File::open(type_def_file) {
|
||||
let reader = BufReader::new(content);
|
||||
let cleaned_content = reader
|
||||
.lines()
|
||||
.filter_map(|line| {
|
||||
if let Ok(line) = line {
|
||||
if let Some((package_name, _)) = line.split_once(':') {
|
||||
if pkg_name == package_name {
|
||||
return None;
|
||||
}
|
||||
}
|
||||
Some(line)
|
||||
} else {
|
||||
None
|
||||
}
|
||||
})
|
||||
.collect::<Vec<String>>()
|
||||
.join("\n");
|
||||
let mut content = std::fs::OpenOptions::new()
|
||||
.read(true)
|
||||
.write(true)
|
||||
.truncate(true)
|
||||
.open(type_def_file)?;
|
||||
|
||||
content.write_all(cleaned_content.as_bytes())?;
|
||||
content.write_all(b"\n")?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue