/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ use std::env; use std::path::{Path, PathBuf}; fn main() { // copy include! files from script_bindings's OUT_DIR, to script's OUT_DIR // this is done to bypass limitation of Rust Analyzer: https://github.com/rust-lang/rust-analyzer/issues/17040 let script_bindings_out_dir = PathBuf::from(env::var_os("DEP_SCRIPT_BINDINGS_CRATE_OUT_DIR").unwrap()); let out_dir = PathBuf::from(env::var_os("OUT_DIR").unwrap()); // copy concrete files [ "InterfaceTypes.rs", "DomTypeHolder.rs", "InterfaceObjectMap.rs", "ConcreteInheritTypes.rs", "UnionTypes.rs", "InterfaceObjectMapPhf.rs", ] .iter() .map(Path::new) .for_each(|file| { println!( "cargo::rerun-if-changed={}", script_bindings_out_dir.join(file).display() ); std::fs::copy( script_bindings_out_dir.join(file), out_dir.join(file.file_name().unwrap()), ) .unwrap(); }); // copy ConcreteBindings folder let _ = std::fs::create_dir(out_dir.join("ConcreteBindings")); let script_concrete_bindings_out_dir = script_bindings_out_dir.join("ConcreteBindings"); println!( "cargo::rerun-if-changed={}", script_concrete_bindings_out_dir.display() ); std::fs::read_dir(script_concrete_bindings_out_dir) .unwrap() .filter_map(|res| res.map(|e| e.path()).ok()) .filter(|path| path.is_file()) .for_each(|file| { std::fs::copy( &file, out_dir .join("ConcreteBindings") .join(file.file_name().unwrap()), ) .unwrap(); }); }