diff --git a/build.rs b/build.rs new file mode 100644 index 000000000..5709b73fe --- /dev/null +++ b/build.rs @@ -0,0 +1,61 @@ +use std::process::Command; + +const CONTRACTS_PATH: &str = "./contracts"; + +fn main() { + compile_contracts(); +} + +fn compile_contracts() { + if !CONTRACTS_PATH.is_empty() { + if let Err(err) = std::env::set_current_dir(CONTRACTS_PATH) { + eprintln!("Error changing to subdirectory: {}", err); + return; + } + } + + let install_result = Command::new("npm").arg("ci").status(); + + match install_result { + Ok(status) => { + if status.success() { + println!( + "npm dependencies installed successfully in {}!", + CONTRACTS_PATH + ); + } else { + eprintln!( + "Error installing npm dependencies in {}: {:?}", + CONTRACTS_PATH, status + ); + } + } + Err(err) => { + eprintln!("Error executing npm ci: {}", err); + } + } + + let compile_result = Command::new("npm").arg("run").arg("build").status(); + + match compile_result { + Ok(status) => { + if status.success() { + println!("Artifacts compiled successfully in {}!", CONTRACTS_PATH); + } else { + eprintln!( + "Error compiling artifacts in {}: {:?}", + CONTRACTS_PATH, status + ); + } + } + Err(err) => { + eprintln!("Error executing npm run build: {}", err); + } + } + + if let Err(err) = std::env::set_current_dir("..") { + eprintln!("Error changing back to the original directory: {}", err); + } + + // println!("cargo:rerun-if-changed={}", CONTRACTS_PATH); +}