mirror of
https://github.com/zebrajr/react.git
synced 2025-12-06 12:20:20 +01:00
* Change prettier dependency in package.json version 1.8.1 * Update yarn.lock * Apply prettier changes * Fix ReactDOMServerIntegration-test.js * Fix test for ReactDOMComponent-test.js
71 lines
1.4 KiB
JavaScript
71 lines
1.4 KiB
JavaScript
'use strict';
|
|
|
|
const chalk = require('chalk');
|
|
const {dots} = require('cli-spinners');
|
|
const {exec} = require('child-process-promise');
|
|
const logUpdate = require('log-update');
|
|
|
|
const execRead = async (command, options) => {
|
|
const {stdout} = await exec(command, options);
|
|
|
|
return stdout.trim();
|
|
};
|
|
|
|
const unexecutedCommands = [];
|
|
|
|
const execUnlessDry = async (command, {cwd, dry}) => {
|
|
if (dry) {
|
|
unexecutedCommands.push(`${command} # {cwd: ${cwd}}`);
|
|
} else {
|
|
await exec(command, {cwd});
|
|
}
|
|
};
|
|
|
|
const getUnexecutedCommands = () => {
|
|
if (unexecutedCommands.length > 0) {
|
|
return chalk`
|
|
The following commands were not executed because of the {bold --dry} flag:
|
|
{gray ${unexecutedCommands.join('\n')}}
|
|
`;
|
|
} else {
|
|
return '';
|
|
}
|
|
};
|
|
|
|
const logPromise = async (promise, text, completedLabel = '') => {
|
|
const {frames, interval} = dots;
|
|
|
|
let index = 0;
|
|
|
|
const id = setInterval(() => {
|
|
index = ++index % frames.length;
|
|
logUpdate(
|
|
`${chalk.yellow(frames[index])} ${text} ${chalk.gray(
|
|
'- this may take a few seconds'
|
|
)}`
|
|
);
|
|
}, interval);
|
|
|
|
try {
|
|
const returnValue = await promise;
|
|
|
|
clearInterval(id);
|
|
|
|
logUpdate(`${chalk.green('✓')} ${text} ${chalk.gray(completedLabel)}`);
|
|
logUpdate.done();
|
|
|
|
return returnValue;
|
|
} catch (error) {
|
|
logUpdate.clear();
|
|
|
|
throw error;
|
|
}
|
|
};
|
|
|
|
module.exports = {
|
|
execRead,
|
|
execUnlessDry,
|
|
getUnexecutedCommands,
|
|
logPromise,
|
|
};
|