50 lines
1.4 KiB
JavaScript
50 lines
1.4 KiB
JavaScript
const path = require('path');
|
|
const cp = require('child_process');
|
|
const fs = require('fs');
|
|
|
|
const PACKAGE_ROOT = path.join(__dirname, '..');
|
|
|
|
// install addon deps
|
|
const addonsPath = path.join(PACKAGE_ROOT, 'addons');
|
|
if (fs.existsSync(addonsPath)) {
|
|
console.log('pulling addon dependencies...');
|
|
|
|
// whether to use yarn or npm
|
|
let hasYarn = false;
|
|
try {
|
|
cp.execSync('yarn --version').toString();
|
|
hasYarn = true;
|
|
} catch(e) {}
|
|
|
|
// walk all addon folders
|
|
fs.readdir(addonsPath, (err, files) => {
|
|
files.forEach(folder => {
|
|
const addonPath = path.join(addonsPath, folder);
|
|
|
|
// install only if there are dependencies listed
|
|
// also skip addon if it does not contain any package.json
|
|
// (might happen after branch switches)
|
|
let packageJson;
|
|
try {
|
|
packageJson = require(path.join(addonPath, 'package.json'));
|
|
} catch (e) {}
|
|
if (packageJson
|
|
&& (
|
|
(packageJson.devDependencies && Object.keys(packageJson.devDependencies).length)
|
|
|| (packageJson.dependencies && Object.keys(packageJson.dependencies).length)
|
|
)
|
|
)
|
|
{
|
|
console.log('Preparing', folder);
|
|
if (hasYarn) {
|
|
cp.execSync('yarn', {cwd: addonPath});
|
|
} else {
|
|
cp.execSync('npm install', {cwd: addonPath});
|
|
}
|
|
} else {
|
|
console.log('Skipped', folder);
|
|
}
|
|
});
|
|
});
|
|
}
|