Lines
100 %
Functions
83.33 %
Branches
use std::fs;
use std::process::Command;
const RUSTC_WASM_ARGS: &str = "--target wasm32-unknown-unknown \
--crate-type cdylib \
--emit link \
-C embed-bitcode=no \
-C opt-level=z \
-C link-args=-zstack-size,0x1000,-zheap-size=0x1000 \
--edition 2024";
fn main() {
let output = Command::new("git")
.args(["rev-parse", "HEAD"])
.output()
.expect("Can't get git revision");
let git_hash = String::from_utf8(output.stdout).expect("Can't parse git revision");
println!("cargo:rustc-env=GIT_HASH={git_hash}");
let build_date = chrono::Utc::now().to_rfc3339();
println!("cargo:rustc-env=BUILD_DATE={build_date}");
println!("cargo:rerun-if-changed=locales");
println!("cargo:rerun-if-changed=testdata");
let buildwasm = |name: &str| {
let output_path = format!("../target/{name}.wasm");
let source_path = format!("testdata/{name}.rs");
let status = Command::new("rustc")
.args(RUSTC_WASM_ARGS.split_whitespace()) // Split the arguments string by whitespace
.arg(&source_path)
.arg("-o")
.arg(&output_path)
.status()
.expect("Failed to build wasmscript");
assert!(status.success(), "Building wasmscript {name} failed");
};
fs::read_dir("testdata")
.unwrap_or_else(|_| fs::read_dir("").unwrap())
.flatten()
.filter_map(|entry| {
let path = entry.path();
if path.extension() == Some("rs".as_ref()) {
path.file_stem()
.map(|stem| stem.to_string_lossy().into_owned())
} else {
None
}
})
.for_each(|filename| buildwasm(&filename));