rimraf 3.0.2 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +128 -64
- package/dist/cjs/package.json +74 -0
- package/dist/cjs/src/bin.d.ts +7 -0
- package/dist/cjs/src/bin.js +144 -0
- package/dist/cjs/src/bin.js.map +1 -0
- package/dist/cjs/src/default-tmp.d.ts +2 -0
- package/dist/cjs/src/default-tmp.js +61 -0
- package/dist/cjs/src/default-tmp.js.map +1 -0
- package/dist/cjs/src/fix-eperm.d.ts +2 -0
- package/dist/cjs/src/fix-eperm.js +58 -0
- package/dist/cjs/src/fix-eperm.js.map +1 -0
- package/dist/cjs/src/fs.d.ts +17 -0
- package/dist/cjs/src/fs.js +41 -0
- package/dist/cjs/src/fs.js.map +1 -0
- package/dist/cjs/src/ignore-enoent.d.ts +2 -0
- package/dist/cjs/src/ignore-enoent.js +21 -0
- package/dist/cjs/src/ignore-enoent.js.map +1 -0
- package/dist/cjs/src/index.d.ts +60 -0
- package/dist/cjs/src/index.js +79 -0
- package/dist/cjs/src/index.js.map +1 -0
- package/dist/cjs/src/opt-arg.d.ts +3 -0
- package/dist/cjs/src/opt-arg.js +8 -0
- package/dist/cjs/src/opt-arg.js.map +1 -0
- package/dist/cjs/src/path-arg.d.ts +3 -0
- package/dist/cjs/src/path-arg.js +54 -0
- package/dist/cjs/src/path-arg.js.map +1 -0
- package/dist/cjs/src/platform.d.ts +2 -0
- package/dist/cjs/src/platform.js +4 -0
- package/dist/cjs/src/platform.js.map +1 -0
- package/dist/cjs/src/readdir-or-error.d.ts +3 -0
- package/dist/cjs/src/readdir-or-error.js +19 -0
- package/dist/cjs/src/readdir-or-error.js.map +1 -0
- package/dist/cjs/src/retry-busy.d.ts +7 -0
- package/dist/cjs/src/retry-busy.js +65 -0
- package/dist/cjs/src/retry-busy.js.map +1 -0
- package/dist/cjs/src/rimraf-manual.d.ts +2 -0
- package/dist/cjs/src/rimraf-manual.js +12 -0
- package/dist/cjs/src/rimraf-manual.js.map +1 -0
- package/dist/cjs/src/rimraf-move-remove.d.ts +3 -0
- package/dist/cjs/src/rimraf-move-remove.js +124 -0
- package/dist/cjs/src/rimraf-move-remove.js.map +1 -0
- package/dist/cjs/src/rimraf-native.d.ts +3 -0
- package/dist/cjs/src/rimraf-native.js +18 -0
- package/dist/cjs/src/rimraf-native.js.map +1 -0
- package/dist/cjs/src/rimraf-posix.d.ts +3 -0
- package/dist/cjs/src/rimraf-posix.js +60 -0
- package/dist/cjs/src/rimraf-posix.js.map +1 -0
- package/dist/cjs/src/rimraf-windows.d.ts +3 -0
- package/dist/cjs/src/rimraf-windows.js +110 -0
- package/dist/cjs/src/rimraf-windows.js.map +1 -0
- package/dist/cjs/src/use-native.d.ts +2 -0
- package/dist/cjs/src/use-native.js +9 -0
- package/dist/cjs/src/use-native.js.map +1 -0
- package/dist/mjs/package.json +74 -0
- package/dist/mjs/src/bin.d.ts +7 -0
- package/dist/mjs/src/bin.js +138 -0
- package/dist/mjs/src/bin.js.map +1 -0
- package/dist/mjs/src/default-tmp.d.ts +2 -0
- package/dist/mjs/src/default-tmp.js +55 -0
- package/dist/mjs/src/default-tmp.js.map +1 -0
- package/dist/mjs/src/fix-eperm.d.ts +2 -0
- package/dist/mjs/src/fix-eperm.js +53 -0
- package/dist/mjs/src/fix-eperm.js.map +1 -0
- package/dist/mjs/src/fs.d.ts +17 -0
- package/dist/mjs/src/fs.js +27 -0
- package/dist/mjs/src/fs.js.map +1 -0
- package/dist/mjs/src/ignore-enoent.d.ts +2 -0
- package/dist/mjs/src/ignore-enoent.js +16 -0
- package/dist/mjs/src/ignore-enoent.js.map +1 -0
- package/dist/mjs/src/index.d.ts +60 -0
- package/dist/mjs/src/index.js +71 -0
- package/dist/mjs/src/index.js.map +1 -0
- package/dist/mjs/src/opt-arg.d.ts +3 -0
- package/dist/mjs/src/opt-arg.js +6 -0
- package/dist/mjs/src/opt-arg.js.map +1 -0
- package/dist/mjs/src/path-arg.d.ts +3 -0
- package/dist/mjs/src/path-arg.js +49 -0
- package/dist/mjs/src/path-arg.js.map +1 -0
- package/dist/mjs/src/platform.d.ts +2 -0
- package/dist/mjs/src/platform.js +2 -0
- package/dist/mjs/src/platform.js.map +1 -0
- package/dist/mjs/src/readdir-or-error.d.ts +3 -0
- package/dist/mjs/src/readdir-or-error.js +14 -0
- package/dist/mjs/src/readdir-or-error.js.map +1 -0
- package/dist/mjs/src/retry-busy.d.ts +7 -0
- package/dist/mjs/src/retry-busy.js +60 -0
- package/dist/mjs/src/retry-busy.js.map +1 -0
- package/dist/mjs/src/rimraf-manual.d.ts +2 -0
- package/dist/mjs/src/rimraf-manual.js +6 -0
- package/dist/mjs/src/rimraf-manual.js.map +1 -0
- package/dist/mjs/src/rimraf-move-remove.d.ts +3 -0
- package/dist/mjs/src/rimraf-move-remove.js +119 -0
- package/dist/mjs/src/rimraf-move-remove.js.map +1 -0
- package/dist/mjs/src/rimraf-native.d.ts +3 -0
- package/dist/mjs/src/rimraf-native.js +13 -0
- package/dist/mjs/src/rimraf-native.js.map +1 -0
- package/dist/mjs/src/rimraf-posix.d.ts +3 -0
- package/dist/mjs/src/rimraf-posix.js +55 -0
- package/dist/mjs/src/rimraf-posix.js.map +1 -0
- package/dist/mjs/src/rimraf-windows.d.ts +3 -0
- package/dist/mjs/src/rimraf-windows.js +105 -0
- package/dist/mjs/src/rimraf-windows.js.map +1 -0
- package/dist/mjs/src/use-native.d.ts +2 -0
- package/dist/mjs/src/use-native.js +6 -0
- package/dist/mjs/src/use-native.js.map +1 -0
- package/package.json +57 -15
- package/CHANGELOG.md +0 -65
- package/bin.js +0 -68
- package/rimraf.js +0 -360
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
// This is the same as rimrafPosix, with the following changes:
|
|
2
|
+
//
|
|
3
|
+
// 1. EBUSY, ENFILE, EMFILE trigger retries and/or exponential backoff
|
|
4
|
+
// 2. All non-directories are removed first and then all directories are
|
|
5
|
+
// removed in a second sweep.
|
|
6
|
+
// 3. If we hit ENOTEMPTY in the second sweep, fall back to move-remove on
|
|
7
|
+
// the that folder.
|
|
8
|
+
//
|
|
9
|
+
// Note: "move then remove" is 2-10 times slower, and just as unreliable.
|
|
10
|
+
import { parse, resolve } from 'path';
|
|
11
|
+
import { ignoreENOENT, ignoreENOENTSync } from './ignore-enoent';
|
|
12
|
+
import { fixEPERM, fixEPERMSync } from './fix-eperm';
|
|
13
|
+
import { readdirOrError, readdirOrErrorSync } from './readdir-or-error';
|
|
14
|
+
import { retryBusy, retryBusySync } from './retry-busy';
|
|
15
|
+
import { rimrafMoveRemove, rimrafMoveRemoveSync } from './rimraf-move-remove';
|
|
16
|
+
import { promises, rmdirSync, unlinkSync } from './fs';
|
|
17
|
+
const { unlink, rmdir } = promises;
|
|
18
|
+
const rimrafWindowsFile = retryBusy(fixEPERM(unlink));
|
|
19
|
+
const rimrafWindowsFileSync = retryBusySync(fixEPERMSync(unlinkSync));
|
|
20
|
+
const rimrafWindowsDir = retryBusy(fixEPERM(rmdir));
|
|
21
|
+
const rimrafWindowsDirSync = retryBusySync(fixEPERMSync(rmdirSync));
|
|
22
|
+
const rimrafWindowsDirMoveRemoveFallback = async (path, opt) => {
|
|
23
|
+
try {
|
|
24
|
+
await rimrafWindowsDir(path, opt);
|
|
25
|
+
}
|
|
26
|
+
catch (er) {
|
|
27
|
+
if (er?.code === 'ENOTEMPTY') {
|
|
28
|
+
return await rimrafMoveRemove(path, opt);
|
|
29
|
+
}
|
|
30
|
+
throw er;
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
const rimrafWindowsDirMoveRemoveFallbackSync = (path, opt) => {
|
|
34
|
+
try {
|
|
35
|
+
rimrafWindowsDirSync(path, opt);
|
|
36
|
+
}
|
|
37
|
+
catch (er) {
|
|
38
|
+
if (er?.code === 'ENOTEMPTY') {
|
|
39
|
+
return rimrafMoveRemoveSync(path, opt);
|
|
40
|
+
}
|
|
41
|
+
throw er;
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
const START = Symbol('start');
|
|
45
|
+
const CHILD = Symbol('child');
|
|
46
|
+
const FINISH = Symbol('finish');
|
|
47
|
+
const states = new Set([START, CHILD, FINISH]);
|
|
48
|
+
export const rimrafWindows = async (path, opt, state = START) => {
|
|
49
|
+
if (!states.has(state)) {
|
|
50
|
+
throw new TypeError('invalid third argument passed to rimraf');
|
|
51
|
+
}
|
|
52
|
+
const entries = await readdirOrError(path);
|
|
53
|
+
if (!Array.isArray(entries)) {
|
|
54
|
+
if (entries.code === 'ENOENT') {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
if (entries.code !== 'ENOTDIR') {
|
|
58
|
+
throw entries;
|
|
59
|
+
}
|
|
60
|
+
// is a file
|
|
61
|
+
return ignoreENOENT(rimrafWindowsFile(path, opt));
|
|
62
|
+
}
|
|
63
|
+
await Promise.all(entries.map(entry => rimrafWindows(resolve(path, entry), opt, state === START ? CHILD : state)));
|
|
64
|
+
if (state === START) {
|
|
65
|
+
return rimrafWindows(path, opt, FINISH);
|
|
66
|
+
}
|
|
67
|
+
else if (state === FINISH) {
|
|
68
|
+
if (opt.preserveRoot === false && path === parse(path).root) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
return ignoreENOENT(rimrafWindowsDirMoveRemoveFallback(path, opt));
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
export const rimrafWindowsSync = (path, opt, state = START) => {
|
|
75
|
+
if (!states.has(state)) {
|
|
76
|
+
throw new TypeError('invalid third argument passed to rimraf');
|
|
77
|
+
}
|
|
78
|
+
const entries = readdirOrErrorSync(path);
|
|
79
|
+
if (!Array.isArray(entries)) {
|
|
80
|
+
if (entries.code === 'ENOENT') {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
if (entries.code !== 'ENOTDIR') {
|
|
84
|
+
throw entries;
|
|
85
|
+
}
|
|
86
|
+
// is a file
|
|
87
|
+
return ignoreENOENTSync(() => rimrafWindowsFileSync(path, opt));
|
|
88
|
+
}
|
|
89
|
+
for (const entry of entries) {
|
|
90
|
+
const s = state === START ? CHILD : state;
|
|
91
|
+
rimrafWindowsSync(resolve(path, entry), opt, s);
|
|
92
|
+
}
|
|
93
|
+
if (state === START) {
|
|
94
|
+
return rimrafWindowsSync(path, opt, FINISH);
|
|
95
|
+
}
|
|
96
|
+
else if (state === FINISH) {
|
|
97
|
+
if (opt.preserveRoot === false && path === parse(path).root) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
return ignoreENOENTSync(() => {
|
|
101
|
+
rimrafWindowsDirMoveRemoveFallbackSync(path, opt);
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
//# sourceMappingURL=rimraf-windows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rimraf-windows.js","sourceRoot":"","sources":["../../../src/rimraf-windows.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
const version = process.env.__TESTING_RIMRAF_NODE_VERSION__ || process.version;
|
|
2
|
+
const versArr = version.replace(/^v/, '').split('.');
|
|
3
|
+
const hasNative = +versArr[0] > 14 || (+versArr[0] === 14 && +versArr[1] >= 14);
|
|
4
|
+
export const useNative = !hasNative ? () => false : () => true;
|
|
5
|
+
export const useNativeSync = !hasNative ? () => false : () => true;
|
|
6
|
+
//# sourceMappingURL=use-native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-native.js","sourceRoot":"","sources":["../../../src/use-native.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,OAAO,CAAC,OAAO,CAAA;AAC9E,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AACpD,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;AAC/E,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAA;AAC9D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rimraf",
|
|
3
|
-
"version": "
|
|
4
|
-
"main": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
|
+
"main": "./dist/cjs/src/index.js",
|
|
5
|
+
"module": "./dist/mjs/src/index.js",
|
|
6
|
+
"bin": "./dist/cjs/src/bin.js",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"import": "./dist/mjs/src/index.js",
|
|
10
|
+
"require": "./dist/cjs/src/index.js"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"files": [
|
|
14
|
+
"dist"
|
|
15
|
+
],
|
|
5
16
|
"description": "A deep deletion module for node (like `rm -rf`)",
|
|
6
17
|
"author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
|
|
7
18
|
"license": "ISC",
|
|
@@ -9,24 +20,55 @@
|
|
|
9
20
|
"scripts": {
|
|
10
21
|
"preversion": "npm test",
|
|
11
22
|
"postversion": "npm publish",
|
|
12
|
-
"
|
|
13
|
-
"
|
|
23
|
+
"prepublishOnly": "git push origin --follow-tags",
|
|
24
|
+
"preprepare": "rm -rf dist",
|
|
25
|
+
"prepare": "tsc -p tsconfig-cjs.json && tsc -p tsconfig-esm.json",
|
|
26
|
+
"postprepare": "bash fixup.sh",
|
|
27
|
+
"pretest": "npm run prepare",
|
|
28
|
+
"presnap": "npm run prepare",
|
|
29
|
+
"test": "c8 tap",
|
|
30
|
+
"snap": "c8 tap",
|
|
31
|
+
"format": "prettier --write . --loglevel warn",
|
|
32
|
+
"benchmark": "node benchmark/index.js",
|
|
33
|
+
"typedoc": "typedoc --tsconfig tsconfig-esm.json ./src/*.ts"
|
|
14
34
|
},
|
|
15
|
-
"
|
|
16
|
-
|
|
17
|
-
"
|
|
35
|
+
"prettier": {
|
|
36
|
+
"semi": false,
|
|
37
|
+
"printWidth": 80,
|
|
38
|
+
"tabWidth": 2,
|
|
39
|
+
"useTabs": false,
|
|
40
|
+
"singleQuote": true,
|
|
41
|
+
"jsxSingleQuote": false,
|
|
42
|
+
"bracketSameLine": true,
|
|
43
|
+
"arrowParens": "avoid",
|
|
44
|
+
"endOfLine": "lf"
|
|
18
45
|
},
|
|
19
|
-
"files": [
|
|
20
|
-
"LICENSE",
|
|
21
|
-
"README.md",
|
|
22
|
-
"bin.js",
|
|
23
|
-
"rimraf.js"
|
|
24
|
-
],
|
|
25
46
|
"devDependencies": {
|
|
26
|
-
"
|
|
27
|
-
"tap": "^
|
|
47
|
+
"@types/node": "^18.11.9",
|
|
48
|
+
"@types/tap": "^15.0.7",
|
|
49
|
+
"c8": "^7.12.0",
|
|
50
|
+
"eslint-config-prettier": "^8.6.0",
|
|
51
|
+
"mkdirp": "1",
|
|
52
|
+
"prettier": "^2.8.2",
|
|
53
|
+
"tap": "^16.3.3",
|
|
54
|
+
"ts-node": "^10.9.1",
|
|
55
|
+
"typedoc": "^0.23.21",
|
|
56
|
+
"typescript": "^4.9.3"
|
|
57
|
+
},
|
|
58
|
+
"tap": {
|
|
59
|
+
"coverage": false,
|
|
60
|
+
"libtap-settings": "libtap-settings.js",
|
|
61
|
+
"node-arg": [
|
|
62
|
+
"--no-warnings",
|
|
63
|
+
"--loader",
|
|
64
|
+
"ts-node/esm"
|
|
65
|
+
],
|
|
66
|
+
"ts": false
|
|
28
67
|
},
|
|
29
68
|
"funding": {
|
|
30
69
|
"url": "https://github.com/sponsors/isaacs"
|
|
70
|
+
},
|
|
71
|
+
"engines": {
|
|
72
|
+
"node": ">=14"
|
|
31
73
|
}
|
|
32
74
|
}
|
package/CHANGELOG.md
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
# v3.0
|
|
2
|
-
|
|
3
|
-
- Add `--preserve-root` option to executable (default true)
|
|
4
|
-
- Drop support for Node.js below version 6
|
|
5
|
-
|
|
6
|
-
# v2.7
|
|
7
|
-
|
|
8
|
-
- Make `glob` an optional dependency
|
|
9
|
-
|
|
10
|
-
# 2.6
|
|
11
|
-
|
|
12
|
-
- Retry on EBUSY on non-windows platforms as well
|
|
13
|
-
- Make `rimraf.sync` 10000% more reliable on Windows
|
|
14
|
-
|
|
15
|
-
# 2.5
|
|
16
|
-
|
|
17
|
-
- Handle Windows EPERM when lstat-ing read-only dirs
|
|
18
|
-
- Add glob option to pass options to glob
|
|
19
|
-
|
|
20
|
-
# 2.4
|
|
21
|
-
|
|
22
|
-
- Add EPERM to delay/retry loop
|
|
23
|
-
- Add `disableGlob` option
|
|
24
|
-
|
|
25
|
-
# 2.3
|
|
26
|
-
|
|
27
|
-
- Make maxBusyTries and emfileWait configurable
|
|
28
|
-
- Handle weird SunOS unlink-dir issue
|
|
29
|
-
- Glob the CLI arg for better Windows support
|
|
30
|
-
|
|
31
|
-
# 2.2
|
|
32
|
-
|
|
33
|
-
- Handle ENOENT properly on Windows
|
|
34
|
-
- Allow overriding fs methods
|
|
35
|
-
- Treat EPERM as indicative of non-empty dir
|
|
36
|
-
- Remove optional graceful-fs dep
|
|
37
|
-
- Consistently return null error instead of undefined on success
|
|
38
|
-
- win32: Treat ENOTEMPTY the same as EBUSY
|
|
39
|
-
- Add `rimraf` binary
|
|
40
|
-
|
|
41
|
-
# 2.1
|
|
42
|
-
|
|
43
|
-
- Fix SunOS error code for a non-empty directory
|
|
44
|
-
- Try rmdir before readdir
|
|
45
|
-
- Treat EISDIR like EPERM
|
|
46
|
-
- Remove chmod
|
|
47
|
-
- Remove lstat polyfill, node 0.7 is not supported
|
|
48
|
-
|
|
49
|
-
# 2.0
|
|
50
|
-
|
|
51
|
-
- Fix myGid call to check process.getgid
|
|
52
|
-
- Simplify the EBUSY backoff logic.
|
|
53
|
-
- Use fs.lstat in node >= 0.7.9
|
|
54
|
-
- Remove gently option
|
|
55
|
-
- remove fiber implementation
|
|
56
|
-
- Delete files that are marked read-only
|
|
57
|
-
|
|
58
|
-
# 1.0
|
|
59
|
-
|
|
60
|
-
- Allow ENOENT in sync method
|
|
61
|
-
- Throw when no callback is provided
|
|
62
|
-
- Make opts.gently an absolute path
|
|
63
|
-
- use 'stat' if 'lstat' is not available
|
|
64
|
-
- Consistent error naming, and rethrow non-ENOENT stat errors
|
|
65
|
-
- add fiber implementation
|
package/bin.js
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
const rimraf = require('./')
|
|
4
|
-
|
|
5
|
-
const path = require('path')
|
|
6
|
-
|
|
7
|
-
const isRoot = arg => /^(\/|[a-zA-Z]:\\)$/.test(path.resolve(arg))
|
|
8
|
-
const filterOutRoot = arg => {
|
|
9
|
-
const ok = preserveRoot === false || !isRoot(arg)
|
|
10
|
-
if (!ok) {
|
|
11
|
-
console.error(`refusing to remove ${arg}`)
|
|
12
|
-
console.error('Set --no-preserve-root to allow this')
|
|
13
|
-
}
|
|
14
|
-
return ok
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
let help = false
|
|
18
|
-
let dashdash = false
|
|
19
|
-
let noglob = false
|
|
20
|
-
let preserveRoot = true
|
|
21
|
-
const args = process.argv.slice(2).filter(arg => {
|
|
22
|
-
if (dashdash)
|
|
23
|
-
return !!arg
|
|
24
|
-
else if (arg === '--')
|
|
25
|
-
dashdash = true
|
|
26
|
-
else if (arg === '--no-glob' || arg === '-G')
|
|
27
|
-
noglob = true
|
|
28
|
-
else if (arg === '--glob' || arg === '-g')
|
|
29
|
-
noglob = false
|
|
30
|
-
else if (arg.match(/^(-+|\/)(h(elp)?|\?)$/))
|
|
31
|
-
help = true
|
|
32
|
-
else if (arg === '--preserve-root')
|
|
33
|
-
preserveRoot = true
|
|
34
|
-
else if (arg === '--no-preserve-root')
|
|
35
|
-
preserveRoot = false
|
|
36
|
-
else
|
|
37
|
-
return !!arg
|
|
38
|
-
}).filter(arg => !preserveRoot || filterOutRoot(arg))
|
|
39
|
-
|
|
40
|
-
const go = n => {
|
|
41
|
-
if (n >= args.length)
|
|
42
|
-
return
|
|
43
|
-
const options = noglob ? { glob: false } : {}
|
|
44
|
-
rimraf(args[n], options, er => {
|
|
45
|
-
if (er)
|
|
46
|
-
throw er
|
|
47
|
-
go(n+1)
|
|
48
|
-
})
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
if (help || args.length === 0) {
|
|
52
|
-
// If they didn't ask for help, then this is not a "success"
|
|
53
|
-
const log = help ? console.log : console.error
|
|
54
|
-
log('Usage: rimraf <path> [<path> ...]')
|
|
55
|
-
log('')
|
|
56
|
-
log(' Deletes all files and folders at "path" recursively.')
|
|
57
|
-
log('')
|
|
58
|
-
log('Options:')
|
|
59
|
-
log('')
|
|
60
|
-
log(' -h, --help Display this usage info')
|
|
61
|
-
log(' -G, --no-glob Do not expand glob patterns in arguments')
|
|
62
|
-
log(' -g, --glob Expand glob patterns in arguments (default)')
|
|
63
|
-
log(' --preserve-root Do not remove \'/\' (default)')
|
|
64
|
-
log(' --no-preserve-root Do not treat \'/\' specially')
|
|
65
|
-
log(' -- Stop parsing flags')
|
|
66
|
-
process.exit(help ? 0 : 1)
|
|
67
|
-
} else
|
|
68
|
-
go(0)
|