Skip to content

Commit 6adc003

Browse files
committed
fix dangling symlinks
closes #76
1 parent 4a1f44d commit 6adc003

1 file changed

Lines changed: 15 additions & 3 deletions

File tree

pkgm.ts

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,9 @@ const parsedArgs = parseArgs(Deno.args, {
4141
v: "version",
4242
h: "help",
4343
p: "pin",
44+
f: "force",
4445
},
45-
boolean: ["help", "version", "pin"],
46+
boolean: ["help", "version", "pin", "force"],
4647
});
4748

4849
if (parsedArgs.help || parsedArgs._[0] == "help") {
@@ -506,8 +507,19 @@ function expand_runtime_env(
506507
}
507508

508509
function symlink_with_overwrite(src: string, dst: string) {
509-
if (existsSync(dst) && Deno.lstatSync(dst).isSymlink) {
510-
Deno.removeSync(dst);
510+
try {
511+
const stat = Deno.lstatSync(dst);
512+
if (stat.isSymlink) {
513+
Deno.removeSync(dst);
514+
} else if (parsedArgs.force) {
515+
Deno.removeSync(dst);
516+
} else {
517+
throw new Error(
518+
`refusing to overwrite non-symlink at: ${dst} (use --force to override)`,
519+
);
520+
}
521+
} catch (e) {
522+
if (!(e instanceof Deno.errors.NotFound)) throw e;
511523
}
512524
Deno.symlinkSync(src, dst);
513525
}

0 commit comments

Comments
 (0)