mirror of
https://github.com/nodejs/node.git
synced 2025-05-22 22:11:41 +00:00

PR-URL: https://github.com/nodejs/node/pull/42122 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Mestery <mestery@protonmail.com> Reviewed-By: Danielle Adams <adamzdanielle@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Tobias Nießen <tniessen@tnie.de>
49 lines
1.5 KiB
JavaScript
49 lines
1.5 KiB
JavaScript
const localeCompare = require('@isaacs/string-locale-compare')('en')
|
|
const Arborist = require('../')
|
|
const log = require('./lib/logging.js')
|
|
|
|
module.exports = (options, time) => {
|
|
const query = options._.shift()
|
|
const a = new Arborist(options)
|
|
return a
|
|
.loadVirtual()
|
|
.then(tree => {
|
|
// only load the actual tree if the virtual one doesn't have modern metadata
|
|
if (!tree.meta || !(tree.meta.originalLockfileVersion >= 2)) {
|
|
throw 'load actual'
|
|
} else {
|
|
return tree
|
|
}
|
|
}).catch((er) => {
|
|
log.error('loading actual tree', er)
|
|
return a.loadActual()
|
|
})
|
|
.then(time)
|
|
.then(({ result: tree }) => {
|
|
const output = []
|
|
if (!query) {
|
|
const set = []
|
|
for (const license of tree.inventory.query('license')) {
|
|
set.push([tree.inventory.query('license', license).size, license])
|
|
}
|
|
|
|
for (const [count, license] of set.sort((a, b) =>
|
|
a[1] && b[1] ? b[0] - a[0] || localeCompare(a[1], b[1])
|
|
: a[1] ? -1
|
|
: b[1] ? 1
|
|
: 0)) {
|
|
output.push(`${count} ${license}`)
|
|
log.info(count, license)
|
|
}
|
|
} else {
|
|
for (const node of tree.inventory.query('license', query === 'undefined' ? undefined : query)) {
|
|
const msg = `${node.name} ${node.location} ${node.package.description || ''}`
|
|
output.push(msg)
|
|
log.info(msg)
|
|
}
|
|
}
|
|
|
|
return output.join('\n')
|
|
})
|
|
}
|