eas-cli
Version:
EAS command line tool
63 lines (62 loc) • 2.42 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.runCommandAsync = void 0;
const tslib_1 = require("tslib");
const spawn_async_1 = tslib_1.__importDefault(require("@expo/spawn-async"));
const chalk_1 = tslib_1.__importDefault(require("chalk"));
const log_1 = tslib_1.__importDefault(require("../log"));
const ora_1 = require("../ora");
async function runCommandAsync({ cwd, args, command, shouldShowStderrLine, shouldPrintStderrLineAsStdout, showSpinner = true, }) {
log_1.default.log(`🏗️ Running ${chalk_1.default.bold(`${command} ${args.join(' ')}`)}...`);
let spinner;
if (showSpinner) {
spinner = (0, ora_1.ora)(`${chalk_1.default.bold(`${command} ${args.join(' ')}`)}`).start();
}
const spawnPromise = (0, spawn_async_1.default)(command, args, {
stdio: ['inherit', 'pipe', 'pipe'],
cwd,
});
const { child: { stdout, stderr }, } = spawnPromise;
if (!stdout || !stderr) {
throw new Error(`Failed to spawn ${command}`);
}
stdout.on('data', data => {
for (const line of data.toString().trim().split('\n')) {
log_1.default.log(`${chalk_1.default.gray(`[${command}]`)} ${line}`);
}
});
stderr.on('data', data => {
for (const line of data.toString().trim().split('\n')) {
if (shouldShowStderrLine && !shouldShowStderrLine(line)) {
continue;
}
const log = `${chalk_1.default.gray(`[${command}]`)} ${line}`;
if (shouldPrintStderrLineAsStdout?.(line)) {
log_1.default.log(log);
}
else {
log_1.default.warn(`${chalk_1.default.gray(`[${command}]`)} ${line}`);
}
}
});
try {
await spawnPromise;
}
catch (error) {
if (showSpinner) {
spinner?.fail(`${chalk_1.default.bold(`${command} ${args.join(' ')}`)} failed`);
}
else {
log_1.default.error(`❌ ${chalk_1.default.bold(`${command} ${args.join(' ')}`)} failed`);
}
throw error;
}
if (showSpinner) {
spinner?.succeed(`${chalk_1.default.bold(`${command} ${args.join(' ')}`)} succeeded`);
}
else {
log_1.default.log(`✅ ${chalk_1.default.bold(`${command} ${args.join(' ')}`)} succeeded`);
}
log_1.default.log('');
}
exports.runCommandAsync = runCommandAsync;
;