use std::env;
use std::fs::OpenOptions;
use std::path::Path;
use std::process::{Command, Stdio};
use anyhow::Context;
use chrome_remote_interface_model_tools as tools;
fn main() -> anyhow::Result<()> {
let outdir = env::var("OUT_DIR").context("no OUT_DIR found.")?;
let destination = Path::new(&outdir).join("model.rs");
let destination = OpenOptions::new()
.create(true)
.write(true)
.truncate(true)
.open(destination)?;
let mut fmt = Command::new("rustfmt")
.stdin(Stdio::piped())
.stdout(destination)
.spawn()
.unwrap();
tools::run("protocol.json", &mut fmt.stdin.take().unwrap()).unwrap();
if !fmt.wait()?.success() {
anyhow::bail!("failed to run rustfmt")
}
tools::check_features("Cargo.toml", "protocol.json")?;
println!("cargo:rerun-if-changed=protocol.json");
Ok(())
}