37 lines
863 B
JavaScript
37 lines
863 B
JavaScript
// Get the actual nodes corresponding to a root node's child workspaces,
|
|
// given a list of workspace names.
|
|
|
|
const log = require('proc-log')
|
|
const relpath = require('./relpath.js')
|
|
|
|
const getWorkspaceNodes = (tree, workspaces) => {
|
|
const wsMap = tree.workspaces
|
|
if (!wsMap) {
|
|
log.warn('workspaces', 'filter set, but no workspaces present')
|
|
return []
|
|
}
|
|
|
|
const nodes = []
|
|
for (const name of workspaces) {
|
|
const path = wsMap.get(name)
|
|
if (!path) {
|
|
log.warn('workspaces', `${name} in filter set, but not in workspaces`)
|
|
continue
|
|
}
|
|
|
|
const loc = relpath(tree.realpath, path)
|
|
const node = tree.inventory.get(loc)
|
|
|
|
if (!node) {
|
|
log.warn('workspaces', `${name} in filter set, but no workspace folder present`)
|
|
continue
|
|
}
|
|
|
|
nodes.push(node)
|
|
}
|
|
|
|
return nodes
|
|
}
|
|
|
|
module.exports = getWorkspaceNodes
|