feat: replace nan with node-addon-api and conditionally print logs

This commit is contained in:
Amaan Qureshi 2024-03-02 20:56:39 -05:00
parent 30bb44f48a
commit 27f52266ac

View file

@ -97,17 +97,22 @@ pub fn generate_grammar_files(
fs::read_to_string(path).with_context(|| "Failed to read package.json")?;
let mut package_json = serde_json::from_str::<Map<String, Value>>(&package_json_str)
.with_context(|| "Failed to parse package.json")?;
let package_json_main = package_json.get("main");
let package_json_types = package_json.get("types");
let package_json_needs_update = package_json_main.map_or(true, |v| {
let main_string = v.as_str();
main_string == Some("index.js") || main_string == Some("./index.js")
}) || package_json_types.is_none();
let package_json_needs_update = package_json
.get("dependencies")
.map_or(false, |d| d.get("nan").is_some())
|| package_json_types.is_none();
if package_json_needs_update {
eprintln!("Updating package.json with new binding path");
package_json.insert(
"main".to_string(),
Value::String("bindings/node".to_string()),
let dependencies = package_json
.entry("dependencies".to_string())
.or_insert_with(|| Value::Object(Map::new()));
let dependencies = dependencies.as_object_mut().unwrap();
if dependencies.remove("nan").is_some() {
eprintln!("Replacing package.json's nan dependency with node-addon-api");
}
dependencies.insert(
"node-addon-api".to_string(),
Value::String("^7.1.0".to_string()),
);
package_json.insert(
"types".to_string(),