From 28eca304b65b595f89b5be3e5e6ec821bba17e14 Mon Sep 17 00:00:00 2001 From: Jawad Tariq Date: Wed, 13 Mar 2024 18:00:49 -0400 Subject: [PATCH] feat: test build.rs Signed-off-by: Jawad Tariq --- build.rs | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 build.rs 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); +}