Make wasm-builder check before copy/write files if the content is the same (#6149)

* Make `wasm-builder` check before copy/write files if the content is the
same

* Update utils/wasm-builder/src/lib.rs

Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com>

Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com>
This commit is contained in:
Bastian Köcher
2020-05-27 00:28:41 +02:00
committed by GitHub
parent 8a7c2c3142
commit 1ea45a541e
2 changed files with 14 additions and 4 deletions
+11
View File
@@ -185,6 +185,17 @@ fn write_file_if_changed(file: PathBuf, content: String) {
}
}
/// Copy `src` to `dst` if the `dst` does not exist or is different.
fn copy_file_if_changed(src: PathBuf, dst: PathBuf) {
let src_file = fs::read_to_string(&src).ok();
let dst_file = fs::read_to_string(&dst).ok();
if src_file != dst_file {
fs::copy(&src, &dst)
.expect(&format!("Copying `{}` to `{}` can not fail; qed", src.display(), dst.display()));
}
}
/// Get a cargo command that compiles with nightly
fn get_nightly_cargo() -> CargoCommand {
let env_cargo = CargoCommand::new(
@@ -302,10 +302,10 @@ fn create_wasm_workspace_project(wasm_workspace: &Path, workspace_root_path: &Pa
wasm_workspace_toml.insert("patch".into(), patch.into());
}
fs::write(
write_file_if_changed(
wasm_workspace.join("Cargo.toml"),
toml::to_string_pretty(&wasm_workspace_toml).expect("Wasm workspace toml is valid; qed"),
).expect("WASM workspace `Cargo.toml` writing can not fail; qed");
);
}
/// Get a list of enabled features for the project.
@@ -382,8 +382,7 @@ fn create_project(cargo_manifest: &Path, wasm_workspace: &Path, crate_metadata:
if let Some(crate_lock_file) = find_cargo_lock(cargo_manifest) {
// Use the `Cargo.lock` of the main project.
fs::copy(crate_lock_file, wasm_workspace.join("Cargo.lock"))
.expect("Copying the `Cargo.lock` can not fail; qed");
crate::copy_file_if_changed(crate_lock_file, wasm_workspace.join("Cargo.lock"));
}
project_folder