You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
28 lines
801 B
28 lines
801 B
2 years ago
|
let fs = require('fs/promises')
|
||
|
let { spawn } = require('child_process')
|
||
|
let path = require('path')
|
||
|
let root = process.cwd()
|
||
|
|
||
|
function npmInstall(cwd) {
|
||
|
return new Promise((resolve) => {
|
||
|
let childProcess = spawn('npm', ['install'], { cwd })
|
||
|
childProcess.on('exit', resolve)
|
||
|
})
|
||
|
}
|
||
|
|
||
|
async function install() {
|
||
|
let base = path.resolve(root, 'integrations')
|
||
|
let ignoreFolders = ['node_modules']
|
||
|
let integrations = (await fs.readdir(base, { withFileTypes: true }))
|
||
|
.filter((integration) => integration.isDirectory())
|
||
|
.filter((integration) => !ignoreFolders.includes(integration.name))
|
||
|
.map((folder) => path.resolve(base, folder.name))
|
||
|
.concat([base])
|
||
|
.map((integration) => npmInstall(integration))
|
||
|
|
||
|
await Promise.all(integrations)
|
||
|
console.log('Done!')
|
||
|
}
|
||
|
|
||
|
install()
|