use crate::export::utils;
use cargo_metadata::camino::Utf8Path;
use fyrox_core::log::Log;
use std::{ffi::OsStr, path::Path, process::Stdio};
pub fn build_package(
package_dir_path: &Utf8Path,
enable_optimization: bool,
) -> std::process::Command {
let mut process = utils::make_command("wasm-pack");
process
.stderr(Stdio::piped())
.arg("build")
.arg(package_dir_path)
.arg("--target")
.arg("web");
if enable_optimization {
process.arg("--release");
} else {
process.arg("--dev");
}
process
}
pub fn copy_binaries(package_dir_path: &Path, destination_folder: &Path) -> Result<(), String> {
Log::info("Trying to copy the executable...");
utils::copy_dir(package_dir_path, destination_folder, &|path: &Path| {
if path.is_file() {
if path.file_name() == Some(OsStr::new("Cargo.toml"))
|| path.file_name() == Some(OsStr::new("README.md"))
|| path.file_name() == Some(OsStr::new(".gitignore"))
{
return false;
}
} else if path.is_dir() && path.file_name() == Some(OsStr::new("target")) {
return false;
}
true
})
.map_err(|e| e.to_string())
}
pub fn run_build(destination_folder: &Path) -> std::io::Result<std::process::Child> {
if !utils::is_installed("basic-http-server") {
Log::verify(utils::cargo_install("basic-http-server"));
}
let child = utils::make_command("basic-http-server")
.arg("--addr")
.arg("127.0.0.1:4000")
.current_dir(destination_folder)
.spawn()?;
Log::verify(open::that_detached("http://127.0.0.1:4000"));
Ok(child)
}