summaryrefslogtreecommitdiff
path: root/deps/npm/lib/cache.js
diff options
context:
space:
mode:
authorTimothy J Fontaine <tjfontaine@gmail.com>2014-08-07 16:33:35 -0700
committerTimothy J Fontaine <tjfontaine@gmail.com>2014-08-07 16:33:35 -0700
commita5778cdf01425ae39cea80b62f9ec6740aec724a (patch)
tree6b011b6046ca68ee33e2cd811048f3e40558d7d9 /deps/npm/lib/cache.js
parent28eee0adb7884e21217c99cbf10a681c7d91b64a (diff)
parentb0277f35bd86d441255dc5a4c19e577e03f03a47 (diff)
downloadandroid-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.js24
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)
+ })
})
}}