Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRebecca Turner <me@re-becca.org>2017-02-23 01:14:08 +0300
committerRebecca Turner <me@re-becca.org>2017-02-24 02:53:52 +0300
commit549dcff58c7aaa1e7ba71abaa14008fdf2697297 (patch)
treed38abdef1509a29310b6b139ca64716e0b3aefec /node_modules/rimraf
parent900a5e3e3411ec221306455f99b24b9ce35757c0 (diff)
rimraf@2.6.0
Retry EBUSY, ENOTEMPTY and EPERM on non-Windows platforms too. More reliable `rimraf.sync` on Windows. Credit: @isaacs
Diffstat (limited to 'node_modules/rimraf')
-rwxr-xr-xnode_modules/rimraf/bin.js16
-rw-r--r--node_modules/rimraf/package.json44
-rw-r--r--node_modules/rimraf/rimraf.js21
3 files changed, 54 insertions, 27 deletions
diff --git a/node_modules/rimraf/bin.js b/node_modules/rimraf/bin.js
index 1bd5a0d16..0d1e17be7 100755
--- a/node_modules/rimraf/bin.js
+++ b/node_modules/rimraf/bin.js
@@ -4,16 +4,21 @@ var rimraf = require('./')
var help = false
var dashdash = false
+var noglob = false
var args = process.argv.slice(2).filter(function(arg) {
if (dashdash)
return !!arg
else if (arg === '--')
dashdash = true
+ else if (arg === '--no-glob' || arg === '-G')
+ noglob = true
+ else if (arg === '--glob' || arg === '-g')
+ noglob = false
else if (arg.match(/^(-+|\/)(h(elp)?|\?)$/))
help = true
else
return !!arg
-});
+})
if (help || args.length === 0) {
// If they didn't ask for help, then this is not a "success"
@@ -24,7 +29,9 @@ if (help || args.length === 0) {
log('')
log('Options:')
log('')
- log(' -h, --help Display this usage info')
+ log(' -h, --help Display this usage info')
+ log(' -G, --no-glob Do not expand glob patterns in arguments')
+ log(' -g, --glob Expand glob patterns in arguments (default)')
process.exit(help ? 0 : 1)
} else
go(0)
@@ -32,7 +39,10 @@ if (help || args.length === 0) {
function go (n) {
if (n >= args.length)
return
- rimraf(args[n], function (er) {
+ var options = {}
+ if (noglob)
+ options = { glob: false }
+ rimraf(args[n], options, function (er) {
if (er)
throw er
go(n+1)
diff --git a/node_modules/rimraf/package.json b/node_modules/rimraf/package.json
index c4043f1eb..0543429f9 100644
--- a/node_modules/rimraf/package.json
+++ b/node_modules/rimraf/package.json
@@ -2,40 +2,39 @@
"_args": [
[
{
- "raw": "rimraf@2.5.4",
+ "raw": "rimraf@2.6.0",
"scope": null,
"escapedName": "rimraf",
"name": "rimraf",
- "rawSpec": "2.5.4",
- "spec": "2.5.4",
+ "rawSpec": "2.6.0",
+ "spec": "2.6.0",
"type": "version"
},
"/Users/rebecca/code/npm"
]
],
- "_from": "rimraf@2.5.4",
- "_id": "rimraf@2.5.4",
+ "_from": "rimraf@2.6.0",
+ "_id": "rimraf@2.6.0",
"_inCache": true,
- "_installable": true,
"_location": "/rimraf",
- "_nodeVersion": "4.4.4",
+ "_nodeVersion": "8.0.0-pre",
"_npmOperationalInternal": {
- "host": "packages-16-east.internal.npmjs.com",
- "tmp": "tmp/rimraf-2.5.4.tgz_1469206941888_0.8645927573088557"
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/rimraf-2.6.0.tgz_1487455299128_0.33092148951254785"
},
"_npmUser": {
"name": "isaacs",
"email": "i@izs.me"
},
- "_npmVersion": "3.10.6",
+ "_npmVersion": "4.3.0",
"_phantomChildren": {},
"_requested": {
- "raw": "rimraf@2.5.4",
+ "raw": "rimraf@2.6.0",
"scope": null,
"escapedName": "rimraf",
"name": "rimraf",
- "rawSpec": "2.5.4",
- "spec": "2.5.4",
+ "rawSpec": "2.6.0",
+ "spec": "2.6.0",
"type": "version"
},
"_requiredBy": [
@@ -44,12 +43,13 @@
"/fs-vacuum",
"/fstream",
"/node-gyp",
- "/npm-registry-client"
+ "/standard/eslint/file-entry-cache/flat-cache/del",
+ "/tacks"
],
- "_resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz",
- "_shasum": "96800093cbf1a0c86bd95b4625467535c29dfa04",
+ "_resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.0.tgz",
+ "_shasum": "89b8a0fe432b9ff9ec9a925a00b6cdb3a91bbada",
"_shrinkwrap": null,
- "_spec": "rimraf@2.5.4",
+ "_spec": "rimraf@2.6.0",
"_where": "/Users/rebecca/code/npm",
"author": {
"name": "Isaac Z. Schlueter",
@@ -68,12 +68,12 @@
"description": "A deep deletion module for node (like `rm -rf`)",
"devDependencies": {
"mkdirp": "^0.5.1",
- "tap": "^6.1.1"
+ "tap": "^10.1.2"
},
"directories": {},
"dist": {
- "shasum": "96800093cbf1a0c86bd95b4625467535c29dfa04",
- "tarball": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz"
+ "shasum": "89b8a0fe432b9ff9ec9a925a00b6cdb3a91bbada",
+ "tarball": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.0.tgz"
},
"files": [
"LICENSE",
@@ -81,7 +81,7 @@
"bin.js",
"rimraf.js"
],
- "gitHead": "2af08bbbd0a03549b278414309dc5d8097699443",
+ "gitHead": "5b661e45ff409d42251890cb1b993c9315803bbf",
"homepage": "https://github.com/isaacs/rimraf#readme",
"license": "ISC",
"main": "rimraf.js",
@@ -101,5 +101,5 @@
"scripts": {
"test": "tap test/*.js"
},
- "version": "2.5.4"
+ "version": "2.6.0"
}
diff --git a/node_modules/rimraf/rimraf.js b/node_modules/rimraf/rimraf.js
index 5d9a5768a..e63321938 100644
--- a/node_modules/rimraf/rimraf.js
+++ b/node_modules/rimraf/rimraf.js
@@ -85,7 +85,7 @@ function rimraf (p, options, cb) {
results.forEach(function (p) {
rimraf_(p, options, function CB (er) {
if (er) {
- if (isWindows && (er.code === "EBUSY" || er.code === "ENOTEMPTY" || er.code === "EPERM") &&
+ if ((er.code === "EBUSY" || er.code === "ENOTEMPTY" || er.code === "EPERM") &&
busyTries < options.maxBusyTries) {
busyTries ++
var time = busyTries * 100
@@ -310,6 +310,7 @@ function rimrafSync (p, options) {
return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er)
if (er.code !== "EISDIR")
throw er
+
rmdirSync(p, options, er)
}
}
@@ -339,5 +340,21 @@ function rmkidsSync (p, options) {
options.readdirSync(p).forEach(function (f) {
rimrafSync(path.join(p, f), options)
})
- options.rmdirSync(p, options)
+
+ // We only end up here once we got ENOTEMPTY at least once, and
+ // at this point, we are guaranteed to have removed all the kids.
+ // So, we know that it won't be ENOENT or ENOTDIR or anything else.
+ // try really hard to delete stuff on windows, because it has a
+ // PROFOUNDLY annoying habit of not closing handles promptly when
+ // files are deleted, resulting in spurious ENOTEMPTY errors.
+ var retries = isWindows ? 100 : 1
+ var i = 0
+ do {
+ try {
+ return options.rmdirSync(p, options)
+ } finally {
+ if (++i < retries)
+ continue
+ }
+ } while (true)
}