From f1375ae88d007fc53b70d5a1bcc88d082072f1f9 Mon Sep 17 00:00:00 2001 From: Lucas Schwiderski Date: Wed, 22 Feb 2023 18:51:58 +0100 Subject: [PATCH] fix(dtmm): Fix re-deploying the same mod --- crates/dtmm/src/engine.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/crates/dtmm/src/engine.rs b/crates/dtmm/src/engine.rs index 8642f5b..05e792e 100644 --- a/crates/dtmm/src/engine.rs +++ b/crates/dtmm/src/engine.rs @@ -275,6 +275,13 @@ async fn build_bundles(state: Arc) -> Result<()> { src.display(), dest.display() ); + // We attempt to remove any previous file, so that the hard link can be created. + // We can reasonably ignore errors here, as a 'NotFound' is actually fine, the link + // may be possible anyways, or the error will be reported by it anyways. + // TODO: There is a chance that we delete an actual game bundle, but with 64bit + // hashes, it's low enough for now, and the set up required to detect + // "game bundle vs mod bundle" is non-trivial. + let _ = fs::remove_file(dest.as_ref()).await; fs::hard_link(&src, dest.as_ref()).await.wrap_err_with(|| { format!("failed to hard link bundle {pkg_name} for mod {mod_name}. src: {}, dest: {}", src.display(), dest.display()) })