Skip to content

Commit 862713d

Browse files
committed
Fix readInstalled regression from last asyncMap changes.
1 parent 556f235 commit 862713d

File tree

1 file changed

+18
-11
lines changed

1 file changed

+18
-11
lines changed

lib/utils/read-installed.js

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,14 @@ function readInstalled (args, cb) {
2020
packages = packages.filter(function (dir) {
2121
return (showAll || args.indexOf(dir) !== -1) && dir.charAt(0) !== "."
2222
})
23-
asyncMap(packages, function (package, cb) {
24-
data[package] = data[package] || {}
25-
var packageDir = path.join(npm.dir, package)
26-
, active = path.join(packageDir, "active")
23+
var pkgDirs = {}
24+
packages.forEach(function (p) {
25+
pkgDirs[p] = path.join(npm.dir, p)
26+
data[p] = {}
27+
})
2728

29+
asyncMap(packages, function (package, cb) {
30+
var active = path.join(pkgDirs[package], "active")
2831
fs.lstat(active, function (er, s) {
2932
if (er || !s.isSymbolicLink()) return cb()
3033
fs.readlink(active, function (er, p) {
@@ -35,18 +38,22 @@ function readInstalled (args, cb) {
3538
return cb()
3639
})
3740
})
38-
39-
fs.readdir(packageDir, function (er, versions) {
40-
if (er) return cb() // skip over non-dirs or missing things.
41+
}, function (package, cb) {
42+
fs.readdir(pkgDirs[package], function (er, versions) {
43+
if (er) {
44+
delete data[package]
45+
return cb() // skip over non-dirs or missing things.
46+
}
4147
asyncMap(versions, function (version, cb) {
42-
if (!version) return cb()
4348
if (semver.valid(version)) {
4449
data[package][version] = data[package][version] || {}
4550
}
51+
cb()
4652
}, cb)
4753
})
48-
49-
// just return the data object we've created.
50-
}, function (er) { cb(er, data) })
54+
}, function (er) {
55+
// just return the data object we've created.
56+
cb(er, data)
57+
})
5158
})
5259
}

0 commit comments

Comments
 (0)