mirror of
https://github.com/rustwasm/wasm-bindgen.git
synced 2024-12-15 21:02:10 +03:00
156eb24359
This fixes things on Windows, which uses backslashes in their paths
52 lines
1.6 KiB
Rust
52 lines
1.6 KiB
Rust
extern crate wasm_bindgen_webidl;
|
|
|
|
use std::env;
|
|
use std::fs;
|
|
use std::path::PathBuf;
|
|
use std::process::Command;
|
|
|
|
fn main() {
|
|
let idls = fs::read_dir(".")
|
|
.unwrap()
|
|
.map(|f| f.unwrap().path())
|
|
.filter(|f| f.extension().and_then(|s| s.to_str()) == Some("webidl"))
|
|
.map(|f| (fs::read_to_string(&f).unwrap(), f));
|
|
|
|
let out_dir = PathBuf::from(env::var_os("OUT_DIR").unwrap());
|
|
for (i, (idl, path)) in idls.enumerate() {
|
|
println!("processing {:?}", path);
|
|
let mut generated_rust = wasm_bindgen_webidl::compile(&idl).unwrap();
|
|
|
|
let out_file = out_dir.join(path.file_name().unwrap())
|
|
.with_extension("rs");
|
|
|
|
let js_file = path.with_extension("js")
|
|
.canonicalize()
|
|
.unwrap();
|
|
generated_rust.push_str(&format!(r#"
|
|
pub mod import_script {{
|
|
use wasm_bindgen::prelude::*;
|
|
use wasm_bindgen_test::*;
|
|
|
|
#[wasm_bindgen(module = r"{}")]
|
|
extern {{
|
|
fn not_actually_a_function{1}();
|
|
}}
|
|
|
|
#[wasm_bindgen_test]
|
|
fn foo() {{
|
|
if ::std::env::var("NOT_GONNA_WORK").is_ok() {{
|
|
not_actually_a_function{1}();
|
|
}}
|
|
}}
|
|
}}
|
|
"#, js_file.display(), i));
|
|
|
|
fs::write(&out_file, generated_rust).unwrap();
|
|
|
|
// Attempt to run rustfmt, but don't worry if it fails or if it isn't
|
|
// installed, this is just to help with debugging
|
|
drop(Command::new("rustfmt").arg(&out_file).status());
|
|
}
|
|
}
|