49 lines
1.1 KiB
JavaScript
49 lines
1.1 KiB
JavaScript
|
const Arborist = require('../')
|
||
|
|
||
|
const printTree = require('./lib/print-tree.js')
|
||
|
const log = require('./lib/logging.js')
|
||
|
|
||
|
const printDiff = diff => {
|
||
|
const { depth } = require('treeverse')
|
||
|
depth({
|
||
|
tree: diff,
|
||
|
visit: d => {
|
||
|
if (d.location === '') {
|
||
|
return
|
||
|
}
|
||
|
switch (d.action) {
|
||
|
case 'REMOVE':
|
||
|
log.info('REMOVE', d.actual.location)
|
||
|
break
|
||
|
case 'ADD':
|
||
|
log.info('ADD', d.ideal.location, d.ideal.resolved)
|
||
|
break
|
||
|
case 'CHANGE':
|
||
|
log.info('CHANGE', d.actual.location, {
|
||
|
from: d.actual.resolved,
|
||
|
to: d.ideal.resolved,
|
||
|
})
|
||
|
break
|
||
|
}
|
||
|
},
|
||
|
getChildren: d => d.children,
|
||
|
})
|
||
|
}
|
||
|
|
||
|
module.exports = (options, time) => {
|
||
|
const arb = new Arborist(options)
|
||
|
return arb
|
||
|
.reify(options)
|
||
|
.then(time)
|
||
|
.then(async ({ timing, result: tree }) => {
|
||
|
printTree(tree)
|
||
|
if (options.dryRun) {
|
||
|
printDiff(arb.diff)
|
||
|
}
|
||
|
if (tree.meta && options.save) {
|
||
|
await tree.meta.save()
|
||
|
}
|
||
|
return `resolved ${tree.inventory.size} deps in ${timing.seconds}`
|
||
|
})
|
||
|
}
|