-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfilter-invalid-actions.js
36 lines (33 loc) · 1 KB
/
filter-invalid-actions.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
'use strict'
var path = require('path')
var validate = require('aproba')
var log = require('npmlog')
var packageId = require('../utils/package-id.js')
module.exports = function (top, differences, next) {
validate('SAF', arguments)
var action
var keep = []
differences.forEach(function (action) {
var cmd = action[0]
var pkg = action[1]
if (cmd === 'remove') {
pkg.removing = true
}
})
/*eslint no-cond-assign:0*/
while (action = differences.shift()) {
var cmd = action[0]
var pkg = action[1]
if (pkg.isInLink || (pkg.parent && (pkg.parent.target || pkg.parent.isLink))) {
// we want to skip warning if this is a child of another module that we're removing
if (!pkg.parent.removing) {
log.verbose('skippingAction', 'Module is inside a symlinked module: not running ' +
cmd + ' ' + packageId(pkg) + ' ' + path.relative(top, pkg.path))
}
} else {
keep.push(action)
}
}
differences.push.apply(differences, keep)
next()
}