mirror of
https://github.com/zebrajr/react.git
synced 2025-12-06 12:20:20 +01:00
[rrm] Lint
This commit is contained in:
parent
e3a41edd83
commit
cfd782471b
|
|
@ -15,3 +15,4 @@ build/
|
||||||
coverage/
|
coverage/
|
||||||
scripts/bench/bench-*.js
|
scripts/bench/bench-*.js
|
||||||
vendor/*
|
vendor/*
|
||||||
|
**/node_modules
|
||||||
|
|
|
||||||
7
scripts/release-manager/.eslintrc.js
Normal file
7
scripts/release-manager/.eslintrc.js
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
rules: {
|
||||||
|
'no-shadow': 0,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
@ -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();
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
})
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
})
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user