-
Notifications
You must be signed in to change notification settings - Fork 0
/
rm.mjs
43 lines (37 loc) · 1 KB
/
rm.mjs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import { existsSync, readdirSync, rmSync, statSync } from 'fs';
import { join, resolve } from 'path';
function __remover(absPath) {
for (const dirent of readdirSync(absPath, { withFileTypes: true })) {
const direntDir = join(absPath, dirent.name);
if (!existsSync(direntDir)) {
continue;
}
if (dirent.isFile()) {
try {
rmSync(direntDir, { recursive: true, force: true });
console.log('Removed:', direntDir);
} catch {
console.log('Failed to remove:', direntDir);
}
} else if (dirent.isDirectory()) {
__remover(direntDir);
}
}
}
for (const rawPath of process.argv.slice(2)) {
const path = resolve(rawPath);
if (!existsSync(path)) {
continue;
}
const stat = statSync(path);
if (stat.isFile()) {
try {
rmSync(path, { recursive: true, force: true });
console.log('Removed:', path);
} catch {
console.log('Failed to remove:', path);
}
} else if (stat.isDirectory()) {
__remover(path);
}
}