react/scripts/release/utils.js
Clement Hoang 94f44aeba7
Update prettier to 1.8.1 (#10785)
* 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
2017-11-07 18:09:33 +00:00

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,
};