Skip to content

Commit

Permalink
Gracefully handle initial installation error (facebook#1512)
Browse files Browse the repository at this point in the history
* Gracefully handle initial installation error

* Print out message when problem occurs
* Delete project folder on errors

* Fix directory deleting message

Resolves facebook#1505
# Conflicts:
#	tasks/e2e-installs.sh
  • Loading branch information
chitchu authored and SpaceK33z committed Mar 7, 2017
1 parent 084f4b2 commit 9f3f97d
Showing 1 changed file with 24 additions and 1 deletion.
25 changes: 24 additions & 1 deletion packages/create-react-cy-app/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,30 @@ function run(root, appName, version, verbose, originalDirectory, template) {

install(allDependencies, verbose, function(code, command, args) {
if (code !== 0) {
console.error(chalk.cyan(command + ' ' + args.join(' ')) + ' failed');
console.log();
console.error('Aborting installation.', chalk.cyan(command + ' ' + args.join(' ')), 'has failed.');
// On 'exit' we will delete these files from target directory.
var knownGeneratedFiles = [
'package.json', 'npm-debug.log', 'yarn-error.log', 'yarn-debug.log', 'node_modules'
];
var currentFiles = fs.readdirSync(path.join(root));
currentFiles.forEach(function (file) {
knownGeneratedFiles.forEach(function (fileToMatch) {
// This will catch `(npm-debug|yarn-error|yarn-debug).log*` files
// and the rest of knownGeneratedFiles.
if ((fileToMatch.match(/.log/g) && file.indexOf(fileToMatch) === 0) || file === fileToMatch) {
console.log('Deleting generated file...', chalk.cyan(file));
fs.removeSync(path.join(root, file));
}
});
});
var remainingFiles = fs.readdirSync(path.join(root));
if (!remainingFiles.length) {
// Delete target folder if empty
console.log('Deleting', chalk.cyan(appName + '/'), 'from', chalk.cyan(path.resolve(root, '..')));
fs.removeSync(path.join(root));
}
console.log('Done.');
process.exit(1);
}

Expand Down

0 comments on commit 9f3f97d

Please sign in to comment.