[rrm] Lint

This commit is contained in:
Paul O’Shannessy 2016-07-22 13:38:27 -07:00 committed by Dan Abramov
parent e3a41edd83
commit cfd782471b
9 changed files with 60 additions and 51 deletions

View File

@ -15,3 +15,4 @@ build/
coverage/ coverage/
scripts/bench/bench-*.js scripts/bench/bench-*.js
vendor/* vendor/*
**/node_modules

View File

@ -0,0 +1,7 @@
'use strict';
module.exports = {
rules: {
'no-shadow': 0,
},
};

View File

@ -23,6 +23,16 @@ const PATH_TO_REPO = path.resolve('../../../react');
// actually running the command, ensuring no accidental publishing. // actually running the command, ensuring no accidental publishing.
const DRY_RUN = false; const DRY_RUN = false;
// Enabled commands
const COMMANDS = [
'init',
'docs-prs',
'q',
'stable-prs',
'version',
'npm-publish',
];
// HELPERS // HELPERS
@ -65,7 +75,7 @@ function gitCherryPickMerge(sha) {
// TODO: gracefully handle other cases, like possibility the commit was // TODO: gracefully handle other cases, like possibility the commit was
// already cherry-picked and should be skipped. // already cherry-picked and should be skipped.
execInRepo(`git cherry-pick -x -m1 ${sha}`) execInRepo(`git cherry-pick -x -m1 ${sha}`);
} }
} }
@ -89,7 +99,7 @@ const app = {
} catch (e) { } catch (e) {
this.config = { this.config = {
token: null, token: null,
} };
console.error('Could not read .config.json. Rate limits are much stricter as a result. Run init to setup.'); console.error('Could not read .config.json. Rate limits are much stricter as a result. Run init to setup.');
} }
@ -109,14 +119,7 @@ const app = {
this.getReactVersion = getReactVersion; this.getReactVersion = getReactVersion;
// Register commands // Register commands
[ COMMANDS.forEach((command) => {
'init',
'docs-prs',
'q',
'stable-prs',
'version',
'npm-publish',
].forEach((command) => {
vorpal.use(require(`./commands/${command}`)(vorpal, app)); vorpal.use(require(`./commands/${command}`)(vorpal, app));
}); });
@ -124,7 +127,7 @@ const app = {
.history('react-release-manager') .history('react-release-manager')
.delimiter('rrm \u2234') .delimiter('rrm \u2234')
.show(); .show();
} },
} };
app.init(); app.init();

View File

@ -3,7 +3,6 @@
const chalk = require('chalk'); const chalk = require('chalk');
const DOCS_LABEL = 'Documentation: needs merge to stable'; const DOCS_LABEL = 'Documentation: needs merge to stable';
const DOCS_URL = 'https://github.com/facebook/react/issues?q=label%3A%22Documentation%3A+needs+merge+to+stable%22+is%3Aclosed'
// FOR DOCS // FOR DOCS
// get all issues with label // get all issues with label
@ -63,11 +62,11 @@ module.exports = function(vorpal, app) {
richPulls.forEach((pr) => { richPulls.forEach((pr) => {
// Convert merged_at to real Date for sorting // Convert merged_at to real Date for sorting
pr.merged_at_date = new Date(pr.merged_at); pr.merged_at_date = new Date(pr.merged_at);
}) });
richPulls = richPulls.sort((a, b) => a.merged_at_date - b.merged_at_date); richPulls = richPulls.sort((a, b) => a.merged_at_date - b.merged_at_date);
this.log(`Found ${chalk.bold(richPulls.length)} pull requests:`) this.log(`Found ${chalk.bold(richPulls.length)} pull requests:`);
richPulls.forEach((pr) => { richPulls.forEach((pr) => {
this.log(`${pr.html_url}: ${chalk.bold(pr.title)}`); this.log(`${pr.html_url}: ${chalk.bold(pr.title)}`);
}); });
@ -75,7 +74,7 @@ module.exports = function(vorpal, app) {
this.prompt({ this.prompt({
name: 'merge', name: 'merge',
type: 'confirm', type: 'confirm',
message: `Merge these ${richPulls.length} pull requests?` message: `Merge these ${richPulls.length} pull requests?`,
}, (res) => { }, (res) => {
if (res.merge) { if (res.merge) {
richPulls.forEach((pr) => { richPulls.forEach((pr) => {
@ -89,7 +88,7 @@ module.exports = function(vorpal, app) {
}, (res) => { }, (res) => {
if (res.push) { if (res.push) {
app.execInRepo('git push'); app.execInRepo('git push');
this.log(`Pushed upstream! Removing "${DOCS_LABEL}" label from pull requests.`) this.log(`Pushed upstream! Removing "${DOCS_LABEL}" label from pull requests.`);
} }
// TODO: actually test this // TODO: actually test this
@ -109,9 +108,9 @@ module.exports = function(vorpal, app) {
}); });
Promise.all(removeLabelsPromises).then(() => { Promise.all(removeLabelsPromises).then(() => {
this.log('Done!') this.log('Done!');
actionCB(); actionCB();
}) });
}); });
} else { } else {
@ -125,4 +124,4 @@ module.exports = function(vorpal, app) {
}); });
}); });
} };

View File

@ -25,8 +25,8 @@ module.exports = function(vorpal, options) {
{ {
name: 'token', name: 'token',
type: 'input', type: 'input',
message: `${chalk.bold('GitHub token?')} ${chalk.grey('(needs "repo" privs)')} ` message: `${chalk.bold('GitHub token?')} ${chalk.grey('(needs "repo" privs)')} `,
} },
]).then((answers) => { ]).then((answers) => {
fs.writeFile(FILENAME, JSON.stringify(answers, null, 2), (err) => { fs.writeFile(FILENAME, JSON.stringify(answers, null, 2), (err) => {
if (err) { if (err) {
@ -38,4 +38,4 @@ module.exports = function(vorpal, options) {
}); });
}); });
} };

View File

@ -10,7 +10,6 @@
const path = require('path'); const path = require('path');
const semver = require('semver'); const semver = require('semver');
const chalk = require('chalk');
const glob = require('glob'); const glob = require('glob');
@ -33,11 +32,11 @@ module.exports = function(vorpal, app) {
{ {
type: 'confirm', type: 'confirm',
message: 'Did you run `grunt build` or `grunt release` and bump the version number?', message: 'Did you run `grunt build` or `grunt release` and bump the version number?',
name: 'checklist' name: 'checklist',
}, },
]).then((answers) => { ]).then((answers) => {
if (!answers.checklist) { if (!answers.checklist) {
return reject('Complete the build process first') return reject('Complete the build process first');
} }
// We'll grab all the tarballs and publish those directly. This // We'll grab all the tarballs and publish those directly. This
@ -45,7 +44,7 @@ module.exports = function(vorpal, app) {
// just npm publish pkg1.tgz && npm publish pkg2.tgz. This // just npm publish pkg1.tgz && npm publish pkg2.tgz. This
// avoided the need to cd and publish. // avoided the need to cd and publish.
const tgz = glob.sync('build/packages/*.tgz', { const tgz = glob.sync('build/packages/*.tgz', {
cwd: app.PATH_TO_REPO cwd: app.PATH_TO_REPO,
}); });
// Just in case they didn't actually prep this. // Just in case they didn't actually prep this.
@ -61,14 +60,14 @@ module.exports = function(vorpal, app) {
if (isStable) { if (isStable) {
tgz.forEach((file) => { tgz.forEach((file) => {
const pkg = path.parse(file).name const pkg = path.parse(file).name;
this.log(app.execInRepo(`npm dist-tag add ${pkg}@${currentVersion} latest`)); this.log(app.execInRepo(`npm dist-tag add ${pkg}@${currentVersion} latest`));
}); });
} }
resolve(); resolve();
}) });
}); });
}); });
} };

View File

@ -11,4 +11,4 @@ module.exports = function(vorpal, config) {
.action((args, cb) => { .action((args, cb) => {
vorpal.exec('exit').then(cb); vorpal.exec('exit').then(cb);
}); });
} };

View File

@ -63,7 +63,7 @@ module.exports = function(vorpal, app) {
return true; return true;
} }
return issue.labels.some((label) => LABELS[label.name]) return issue.labels.some((label) => LABELS[label.name]);
}); });
// We don't enough data about the pull request (merge sha or merge time) so we // We don't enough data about the pull request (merge sha or merge time) so we
@ -98,11 +98,11 @@ module.exports = function(vorpal, app) {
richPulls.forEach((pr) => { richPulls.forEach((pr) => {
// Convert merged_at to real Date for sorting // Convert merged_at to real Date for sorting
pr.merged_at_date = new Date(pr.merged_at); pr.merged_at_date = new Date(pr.merged_at);
}) });
richPulls = richPulls.sort((a, b) => a.merged_at_date - b.merged_at_date); richPulls = richPulls.sort((a, b) => a.merged_at_date - b.merged_at_date);
this.log(`Found ${chalk.bold(richPulls.length)} pull requests:`) this.log(`Found ${chalk.bold(richPulls.length)} pull requests:`);
promptForPRs.call(this, app, richPulls, 0).then(() => { promptForPRs.call(this, app, richPulls, 0).then(() => {
@ -113,7 +113,7 @@ module.exports = function(vorpal, app) {
const milestonePromises = richPulls.map((pr) => { const milestonePromises = richPulls.map((pr) => {
return app.ghissues.editIssue(pr.number, { return app.ghissues.editIssue(pr.number, {
milestone: TARGET_MILESTONE_NUMBER milestone: TARGET_MILESTONE_NUMBER,
}); });
}); });
Promise.all(milestonePromises).then(actionCB); Promise.all(milestonePromises).then(actionCB);
@ -123,7 +123,7 @@ module.exports = function(vorpal, app) {
}); });
}); });
} };
// TODO: pull this out to some shared place. We can reuse this for docs. // TODO: pull this out to some shared place. We can reuse this for docs.
@ -165,7 +165,7 @@ function promptForPRs(app, prs, start) {
// Make sure we resolve in case there were no issues // Make sure we resolve in case there were no issues
if (!failed) { if (!failed) {
resolve() resolve();
} }
}); });
}); });

View File

@ -26,7 +26,7 @@ function updateJSON(path, fields, value) {
try { try {
data = JSON.parse(fs.readFileSync(path, 'utf8')); data = JSON.parse(fs.readFileSync(path, 'utf8'));
} catch (e) { } catch (e) {
this.log(chalk.color.red('ERROR') + ` ${path} doesn't exist… skipping.`) this.log(chalk.color.red('ERROR') + ` ${path} doesn't exist… skipping.`);
} }
fields.forEach((field) => { fields.forEach((field) => {
let fieldPath = field.split('.'); let fieldPath = field.split('.');
@ -48,7 +48,7 @@ module.exports = function(vorpal, app) {
.description('Update the version of React, useful while publishing') .description('Update the version of React, useful while publishing')
.action(function(args, actionCB) { .action(function(args, actionCB) {
let currentVersion = app.getReactVersion() let currentVersion = app.getReactVersion();
// TODO: See if we can do a better job for handling pre* bumps. The ones // TODO: See if we can do a better job for handling pre* bumps. The ones
// semver adds are of the form -0, but we've used -alpha.0 or -rc.0. // semver adds are of the form -0, but we've used -alpha.0 or -rc.0.
@ -58,7 +58,7 @@ module.exports = function(vorpal, app) {
let version = semver.inc(currentVersion, release); let version = semver.inc(currentVersion, release);
return { return {
value: version, value: version,
name:`${chalk.bold(version)} (${release})` name:`${chalk.bold(version)} (${release})`,
}; };
}); });
choices.push('Other'); choices.push('Other');
@ -74,8 +74,8 @@ module.exports = function(vorpal, app) {
type: 'input', type: 'input',
name: 'version', name: 'version',
message: `New version (currently ${chalk.bold(currentVersion)}): `, message: `New version (currently ${chalk.bold(currentVersion)}): `,
when: (res) => res.version === 'Other' when: (res) => res.version === 'Other',
} },
]).then((res) => { ]).then((res) => {
let newVersion = semver.valid(res.version); let newVersion = semver.valid(res.version);
@ -148,8 +148,8 @@ module.exports = function(vorpal, app) {
app.execInRepo(`git tag v${newVersion}`); app.execInRepo(`git tag v${newVersion}`);
} }
actionCB(); actionCB();
}) });
}); });
}); });
} };