mirror of
https://github.com/facebook/react.git
synced 2026-02-25 13:13:03 +00:00
71 lines
2.0 KiB
JavaScript
71 lines
2.0 KiB
JavaScript
/**
|
|
* Command to init a project. This will create the .config.json file if it
|
|
* doesn't already exist.
|
|
*/
|
|
|
|
'use strict';
|
|
|
|
const chalk = require('chalk');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
const untildify = require('untildify');
|
|
|
|
module.exports = function(vorpal, app) {
|
|
vorpal
|
|
.command('init')
|
|
.description('Initializes a .config.json file for use')
|
|
.action(function(args) {
|
|
return new Promise((resolve, reject) => {
|
|
fs.stat(app.PATH_TO_CONFIG, (err, stats) => {
|
|
if (stats) {
|
|
this.log('Config file exists, nothing to do.');
|
|
reject();
|
|
return;
|
|
}
|
|
|
|
this.prompt([
|
|
{
|
|
name: 'githubToken',
|
|
type: 'input',
|
|
message: `${chalk.bold('GitHub token?')} ${chalk.grey('(needs "repo" privs)')} `,
|
|
},
|
|
{
|
|
name: 'reactPath',
|
|
type: 'input',
|
|
message: `${chalk.bold('Location of local React checkout?')} `,
|
|
validate: (input) => {
|
|
let npath = path.normalize(untildify(input));
|
|
|
|
if (npath === '.') {
|
|
return 'Cannot be `.`';
|
|
}
|
|
|
|
let stats;
|
|
try {
|
|
stats = fs.statSync(npath);
|
|
} catch (e) {
|
|
return `Error: ${e}`;
|
|
}
|
|
|
|
if (!stats.isDirectory()) {
|
|
return `${npath} is not a directory.`;
|
|
}
|
|
|
|
// TODO: Look for markers indicating this is a React checkout.
|
|
return true;
|
|
},
|
|
},
|
|
]).then((answers) => {
|
|
fs.writeFile(app.PATH_TO_CONFIG, JSON.stringify(answers, null, 2), (err) => {
|
|
if (err) {
|
|
this.log('Error writing config file.', err);
|
|
reject();
|
|
}
|
|
resolve();
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
};
|