Skip to content

Commit d6ab4ec

Browse files
committed
feat: add --preserve-root (default) option
1 parent 736887a commit d6ab4ec

File tree

1 file changed

+24
-4
lines changed

1 file changed

+24
-4
lines changed

bin.js

+24-4
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,22 @@
22

33
const rimraf = require('./')
44

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+
517
let help = false
618
let dashdash = false
719
let noglob = false
20+
let preserveRoot = true
821
const args = process.argv.slice(2).filter(arg => {
922
if (dashdash)
1023
return !!arg
@@ -16,9 +29,13 @@ const args = process.argv.slice(2).filter(arg => {
1629
noglob = false
1730
else if (arg.match(/^(-+|\/)(h(elp)?|\?)$/))
1831
help = true
32+
else if (arg === '--preserve-root')
33+
preserveRoot = true
34+
else if (arg === '--no-preserve-root')
35+
preserveRoot = false
1936
else
2037
return !!arg
21-
})
38+
}).filter(arg => !preserveRoot || filterOutRoot(arg))
2239

2340
const go = n => {
2441
if (n >= args.length)
@@ -40,9 +57,12 @@ if (help || args.length === 0) {
4057
log('')
4158
log('Options:')
4259
log('')
43-
log(' -h, --help Display this usage info')
44-
log(' -G, --no-glob Do not expand glob patterns in arguments')
45-
log(' -g, --glob Expand glob patterns in arguments (default)')
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')
4666
process.exit(help ? 0 : 1)
4767
} else
4868
go(0)

0 commit comments

Comments
 (0)