Skip to content

Commit ceb10e7

Browse files
committed
attempt to move by cp+rm when mv fails
1 parent 412ea63 commit ceb10e7

File tree

1 file changed

+17
-8
lines changed

1 file changed

+17
-8
lines changed

src/command/render/project.ts

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -461,15 +461,24 @@ export async function renderProject(
461461
// remove directories, we should instead make a function that
462462
// does that explicitly, rather than as a side effect of a missing
463463
// src Dir
464-
if (existsSync(srcDir)) {
465-
if (existsSync(targetDir)) {
466-
Deno.removeSync(targetDir, { recursive: true });
467-
}
468-
ensureDirSync(dirname(targetDir));
469-
if (copy) {
470-
copyTo(srcDir, targetDir);
471-
} else {
464+
if (!existsSync(srcDir)) {
465+
return;
466+
}
467+
if (existsSync(targetDir)) {
468+
Deno.removeSync(targetDir, { recursive: true });
469+
}
470+
ensureDirSync(dirname(targetDir));
471+
if (copy) {
472+
copyTo(srcDir, targetDir);
473+
} else {
474+
try {
472475
Deno.renameSync(srcDir, targetDir);
476+
} catch (_e) {
477+
// if renaming failed, it could have happened
478+
// because src and target are in different file systems.
479+
// In that case, try to recursively copy from src
480+
copyTo(srcDir, targetDir);
481+
Deno.removeSync(srcDir, { recursive: true });
473482
}
474483
}
475484
};

0 commit comments

Comments
 (0)