codekingpro/portable-devtools
114k
1const isWindows = require('./is-windows.js')
2const binTarget = require('./bin-target.js')
3const { dirname, resolve, relative } = require('path')
4const linkBin = isWindows ? require('./shim-bin.js') : require('./link-bin.js')
5const normalize = require('npm-normalize-package-bin')
6
7const linkBins = ({ path, pkg, top, force }) => {
8 pkg = normalize(pkg)
9 if (!pkg.bin) {
10 return Promise.resolve([])
11 }
12 const promises = []
13 const target = binTarget({ path, top })
14 for (const [key, val] of Object.entries(pkg.bin)) {
15 const to = resolve(target, key)
16 const absFrom = resolve(path, val)
17 const from = relative(dirname(to), absFrom)
18 promises.push(linkBin({ path, from, to, absFrom, force }))
19 }
20 return Promise.all(promises)
21}
22
23module.exports = linkBins
24 