diff options
author | Timothy J Fontaine <tjfontaine@gmail.com> | 2014-08-07 16:33:35 -0700 |
---|---|---|
committer | Timothy J Fontaine <tjfontaine@gmail.com> | 2014-08-07 16:33:35 -0700 |
commit | a5778cdf01425ae39cea80b62f9ec6740aec724a (patch) | |
tree | 6b011b6046ca68ee33e2cd811048f3e40558d7d9 /deps/npm/lib/cache.js | |
parent | 28eee0adb7884e21217c99cbf10a681c7d91b64a (diff) | |
parent | b0277f35bd86d441255dc5a4c19e577e03f03a47 (diff) | |
download | android-node-v8-a5778cdf01425ae39cea80b62f9ec6740aec724a.tar.gz android-node-v8-a5778cdf01425ae39cea80b62f9ec6740aec724a.tar.bz2 android-node-v8-a5778cdf01425ae39cea80b62f9ec6740aec724a.zip |
Merge remote-tracking branch 'upstream/v0.10' into v0.12
Conflicts:
ChangeLog
Makefile
deps/uv/ChangeLog
deps/uv/build.mk
deps/uv/src/unix/darwin.c
deps/uv/src/unix/getaddrinfo.c
deps/uv/src/version.c
deps/v8/src/checks.h
deps/v8/src/isolate.h
lib/cluster.js
lib/module.js
lib/timers.js
lib/tls.js
src/node_version.h
Diffstat (limited to 'deps/npm/lib/cache.js')
-rw-r--r-- | deps/npm/lib/cache.js | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/deps/npm/lib/cache.js b/deps/npm/lib/cache.js index 99e85a0f95..37bba5a065 100644 --- a/deps/npm/lib/cache.js +++ b/deps/npm/lib/cache.js @@ -71,6 +71,7 @@ var npm = require("./npm.js") , addLocal = require("./cache/add-local.js") , addRemoteTarball = require("./cache/add-remote-tarball.js") , addRemoteGit = require("./cache/add-remote-git.js") + , inflight = require("inflight") cache.usage = "npm cache add <tarball file>" + "\nnpm cache add <folder>" @@ -207,6 +208,8 @@ cache.add = function (pkg, ver, scrub, cb) { return add([pkg, ver], cb) } + +var adding = 0 function add (args, cb) { // this is hot code. almost everything passes through here. // the args can be any of: @@ -240,6 +243,10 @@ function add (args, cb) { if (!name && !spec) return cb(usage) + if (adding <= 0) { + npm.spinner.start() + } + adding ++ cb = afterAdd([name, spec], cb) // see if the spec is a url @@ -298,6 +305,10 @@ function unpack (pkg, ver, unpackTarget, dMode, fMode, uid, gid, cb) { } function afterAdd (arg, cb) { return function (er, data) { + adding -- + if (adding <= 0) { + npm.spinner.stop() + } if (er || !data || !data.name || !data.version) { return cb(er, data) } @@ -307,8 +318,17 @@ function afterAdd (arg, cb) { return function (er, data) { var name = data.name var ver = data.version var pj = path.join(npm.cache, name, ver, "package", "package.json") - fs.writeFile(pj, JSON.stringify(data), "utf8", function (er) { - cb(er, data) + var tmp = pj + "." + process.pid + + var done = inflight(pj, cb) + + if (!done) return + + fs.writeFile(tmp, JSON.stringify(data), "utf8", function (er) { + if (er) return done(er) + fs.rename(tmp, pj, function (er) { + done(er, data) + }) }) }} |