const isWindows = require('./is-windows.js') const binTarget = require('./bin-target.js') const { dirname, resolve, relative } = require('path') const linkBin = isWindows ? require('./shim-bin.js') : require('./link-bin.js') const normalize = require('npm-normalize-package-bin') const linkBins = ({ path, pkg, top, force }) => { pkg = normalize(pkg) if (!pkg.bin) { return Promise.resolve([]) } const promises = [] const target = binTarget({ path, top }) for (const [key, val] of Object.entries(pkg.bin)) { const to = resolve(target, key) const absFrom = resolve(path, val) const from = relative(dirname(to), absFrom) promises.push(linkBin({ path, from, to, absFrom, force })) } return Promise.all(promises) } module.exports = linkBins