mirror of
https://github.com/rustwasm/wasm-bindgen.git
synced 2024-12-15 21:02:10 +03:00
151ed58b69
This is what rustfmt favors, so let's favor it too! Closes #1042
55 lines
1.7 KiB
Rust
55 lines
1.7 KiB
Rust
extern crate env_logger;
|
|
extern crate wasm_bindgen_webidl;
|
|
|
|
use std::env;
|
|
use std::fs;
|
|
use std::path::PathBuf;
|
|
use std::process::Command;
|
|
|
|
fn main() {
|
|
env_logger::init();
|
|
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, None).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 "C" {{
|
|
fn not_actually_a_function{1}(x: &str);
|
|
}}
|
|
|
|
#[wasm_bindgen_test]
|
|
fn foo() {{
|
|
if ::std::env::var("NOT_GONNA_WORK").is_ok() {{
|
|
not_actually_a_function{1}("foo");
|
|
}}
|
|
}}
|
|
}}
|
|
"#,
|
|
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());
|
|
}
|
|
}
|