@foal/cli
Version:
CLI tool for FoalTS
52 lines (51 loc) • 1.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.installDependencies = installDependencies;
// std
const child_process_1 = require("child_process");
const safe_1 = require("colors/safe");
// FoalTS
const logger_1 = require("./logger");
function isYarnInstalled() {
try {
(0, child_process_1.execSync)('yarn --version', { stdio: 'ignore' });
return true;
}
catch {
return false;
}
}
async function installDependencies(cwd = '') {
const packageManager = isYarnInstalled() ? 'yarn' : 'npm';
const spinner = logger_1.logger.log(`%s 📦 Installing dependencies (${packageManager})...`, true);
const args = ['install' /*, '--ignore-engines'*/];
const options = {
cwd,
shell: true,
stdio: 'ignore',
};
const success = await new Promise(resolve => {
(0, child_process_1.spawn)(packageManager, args, options)
.on('close', (code) => resolve(code === 0));
});
if (spinner) {
spinner.stop(true);
}
if (!success) {
logger_1.logger.log(` ❗ Installing dependencies (${packageManager})...`);
logger_1.logger.log();
logger_1.logger.log((0, safe_1.red)(' Error: ') + 'A problem occurred during the installation of');
logger_1.logger.log('the dependencies. Try installing them manually by running');
logger_1.logger.log('the following command(s):');
logger_1.logger.log();
if (cwd) {
logger_1.logger.logCommand(`cd ${cwd}`);
}
logger_1.logger.logCommand(`${packageManager} install`);
return { failed: true };
}
else {
logger_1.logger.log(` 📦 Installing dependencies (${packageManager})...`);
return { failed: false };
}
}