From 4c56045b5be75f4f96cf2661e0290dfdb310229e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E5=9B=9B?= Date: Fri, 15 Aug 2014 17:40:38 +0800 Subject: [PATCH] remove repeating mkdir in cache/add-remote-tarball.js --- lib/cache/add-remote-tarball.js | 54 ++++++++++++++------------------- 1 file changed, 23 insertions(+), 31 deletions(-) diff --git a/lib/cache/add-remote-tarball.js b/lib/cache/add-remote-tarball.js index 2dbc366e466..2c7d013039d 100644 --- a/lib/cache/add-remote-tarball.js +++ b/lib/cache/add-remote-tarball.js @@ -87,41 +87,33 @@ function fetchAndShaCheck (u, tmp, shasum, cb) { return cb(er, response) } - // mkdir takes a little while, so don't drop chunks! - response.pause() - - mkdir(path.dirname(tmp), function (er) { - if (er) return cb(er) + var tarball = createWriteStream(tmp, { mode : npm.modes.file }) + tarball.on("error", function (er) { + cb(er) + tarball.destroy() + }) - var tarball = createWriteStream(tmp, { mode : npm.modes.file }) - tarball.on("error", function (er) { - cb(er) - tarball.destroy() - }) + tarball.on("finish", function () { + if (!shasum) { + // Well, we weren't given a shasum, so at least sha what we have + // in case we want to compare it to something else later + return sha.get(tmp, function (er, shasum) { + log.silly("fetchAndShaCheck", "shasum", shasum) + cb(er, response, shasum) + }) + } - tarball.on("finish", function () { - if (!shasum) { - // Well, we weren't given a shasum, so at least sha what we have - // in case we want to compare it to something else later - return sha.get(tmp, function (er, shasum) { - log.silly("fetchAndShaCheck", "shasum", shasum) - cb(er, response, shasum) - }) + // validate that the url we just downloaded matches the expected shasum. + log.silly("fetchAndShaCheck", "shasum", shasum) + sha.check(tmp, shasum, function (er) { + if (er && er.message) { + // add original filename for better debuggability + er.message = er.message + "\n" + "From: " + u } - - // validate that the url we just downloaded matches the expected shasum. - log.silly("fetchAndShaCheck", "shasum", shasum) - sha.check(tmp, shasum, function (er) { - if (er && er.message) { - // add original filename for better debuggability - er.message = er.message + "\n" + "From: " + u - } - return cb(er, response, shasum) - }) + return cb(er, response, shasum) }) - - response.pipe(tarball) - response.resume() }) + + response.pipe(tarball) }) }