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.
27 lines
801 B
27 lines
801 B
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()
|
|
|