Skip to content

Commit

Permalink
[rrm] Lint
Browse files Browse the repository at this point in the history
  • Loading branch information
zpao authored and gaearon committed Jan 6, 2017
1 parent e3a41ed commit cfd7824
Show file tree
Hide file tree
Showing 9 changed files with 60 additions and 51 deletions.
1 change: 1 addition & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,4 @@ build/
coverage/
scripts/bench/bench-*.js
vendor/*
**/node_modules
7 changes: 7 additions & 0 deletions scripts/release-manager/.eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
'use strict';

module.exports = {
rules: {
'no-shadow': 0,
},
};
27 changes: 15 additions & 12 deletions scripts/release-manager/cli.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,16 @@ const PATH_TO_REPO = path.resolve('../../../react');
// actually running the command, ensuring no accidental publishing.
const DRY_RUN = false;

// Enabled commands
const COMMANDS = [
'init',
'docs-prs',
'q',
'stable-prs',
'version',
'npm-publish',
];


// HELPERS

Expand Down Expand Up @@ -65,7 +75,7 @@ function gitCherryPickMerge(sha) {
// TODO: gracefully handle other cases, like possibility the commit was
// already cherry-picked and should be skipped.

execInRepo(`git cherry-pick -x -m1 ${sha}`)
execInRepo(`git cherry-pick -x -m1 ${sha}`);
}
}

Expand All @@ -89,7 +99,7 @@ const app = {
} catch (e) {
this.config = {
token: null,
}
};
console.error('Could not read .config.json. Rate limits are much stricter as a result. Run init to setup.');
}

Expand All @@ -109,22 +119,15 @@ const app = {
this.getReactVersion = getReactVersion;

// Register commands
[
'init',
'docs-prs',
'q',
'stable-prs',
'version',
'npm-publish',
].forEach((command) => {
COMMANDS.forEach((command) => {
vorpal.use(require(`./commands/${command}`)(vorpal, app));
});

vorpal
.history('react-release-manager')
.delimiter('rrm \u2234')
.show();
}
}
},
};

app.init();
17 changes: 8 additions & 9 deletions scripts/release-manager/commands/docs-prs.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
const chalk = require('chalk');

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
// get all issues with label
Expand All @@ -24,7 +23,7 @@ module.exports = function(vorpal, app) {
vorpal
.command('docs-prs')
.description('Get list of documentation pull requests that need to be merged to the stable branch')
.action(function (args, actionCB) {
.action(function(args, actionCB) {
const query = {
labels: [DOCS_LABEL].join(), // github-api doesn't join automatically
state: 'closed',
Expand Down Expand Up @@ -63,19 +62,19 @@ module.exports = function(vorpal, app) {
richPulls.forEach((pr) => {
// Convert merged_at to real Date for sorting
pr.merged_at_date = new Date(pr.merged_at);
})
});

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) => {
this.log(`${pr.html_url}: ${chalk.bold(pr.title)}`);
});

this.prompt({
name: 'merge',
type: 'confirm',
message: `Merge these ${richPulls.length} pull requests?`
message: `Merge these ${richPulls.length} pull requests?`,
}, (res) => {
if (res.merge) {
richPulls.forEach((pr) => {
Expand All @@ -89,7 +88,7 @@ module.exports = function(vorpal, app) {
}, (res) => {
if (res.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
Expand All @@ -109,9 +108,9 @@ module.exports = function(vorpal, app) {
});

Promise.all(removeLabelsPromises).then(() => {
this.log('Done!')
this.log('Done!');
actionCB();
})
});
});

} else {
Expand All @@ -125,4 +124,4 @@ module.exports = function(vorpal, app) {
});

});
}
};
6 changes: 3 additions & 3 deletions scripts/release-manager/commands/init.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ module.exports = function(vorpal, options) {
{
name: 'token',
type: 'input',
message: `${chalk.bold('GitHub token?')} ${chalk.grey('(needs "repo" privs)')} `
}
message: `${chalk.bold('GitHub token?')} ${chalk.grey('(needs "repo" privs)')} `,
},
]).then((answers) => {
fs.writeFile(FILENAME, JSON.stringify(answers, null, 2), (err) => {
if (err) {
Expand All @@ -38,4 +38,4 @@ module.exports = function(vorpal, options) {

});
});
}
};
15 changes: 7 additions & 8 deletions scripts/release-manager/commands/npm-publish.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,14 @@
const path = require('path');
const semver = require('semver');

const chalk = require('chalk');
const glob = require('glob');


module.exports = function(vorpal, app) {
vorpal
.command('npm-publish')
.description('Update the version of React, useful while publishing')
.action(function (args) {
.action(function(args) {
return new Promise((resolve, reject) => {
const currentVersion = app.getReactVersion();
const isStable = semver.prerelease(currentVersion) === null;
Expand All @@ -33,19 +32,19 @@ module.exports = function(vorpal, app) {
{
type: 'confirm',
message: 'Did you run `grunt build` or `grunt release` and bump the version number?',
name: 'checklist'
name: 'checklist',
},
]).then((answers) => {
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
// is how we've historically done it, though in the past it was
// just npm publish pkg1.tgz && npm publish pkg2.tgz. This
// avoided the need to cd and publish.
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.
Expand All @@ -61,14 +60,14 @@ module.exports = function(vorpal, app) {

if (isStable) {
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`));
});
}

resolve();
})
});
});

});
}
};
2 changes: 1 addition & 1 deletion scripts/release-manager/commands/q.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ module.exports = function(vorpal, config) {
.action((args, cb) => {
vorpal.exec('exit').then(cb);
});
}
};
14 changes: 7 additions & 7 deletions scripts/release-manager/commands/stable-prs.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ module.exports = function(vorpal, app) {
vorpal
.command('stable-prs')
.description('Get list of stable pull requests that need to be merged to the stable branch')
.action(function (args, actionCB) {
.action(function(args, actionCB) {
// TODO: stop assuming this all fits into a single
const query = {
milestone: MILESTONE_NUMBER,
Expand Down Expand Up @@ -63,7 +63,7 @@ module.exports = function(vorpal, app) {
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
Expand Down Expand Up @@ -98,11 +98,11 @@ module.exports = function(vorpal, app) {
richPulls.forEach((pr) => {
// Convert merged_at to real Date for sorting
pr.merged_at_date = new Date(pr.merged_at);
})
});

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(() => {

Expand All @@ -113,7 +113,7 @@ module.exports = function(vorpal, app) {

const milestonePromises = richPulls.map((pr) => {
return app.ghissues.editIssue(pr.number, {
milestone: TARGET_MILESTONE_NUMBER
milestone: TARGET_MILESTONE_NUMBER,
});
});
Promise.all(milestonePromises).then(actionCB);
Expand All @@ -123,7 +123,7 @@ module.exports = function(vorpal, app) {
});

});
}
};


// TODO: pull this out to some shared place. We can reuse this for docs.
Expand Down Expand Up @@ -165,7 +165,7 @@ function promptForPRs(app, prs, start) {

// Make sure we resolve in case there were no issues
if (!failed) {
resolve()
resolve();
}
});
});
Expand Down
22 changes: 11 additions & 11 deletions scripts/release-manager/commands/version.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ function updateJSON(path, fields, value) {
let data;
try {
data = JSON.parse(fs.readFileSync(path, 'utf8'));
} catch(e) {
this.log(chalk.color.red('ERROR') + ` ${path} doesn't exist… skipping.`)
} catch (e) {
this.log(chalk.color.red('ERROR') + ` ${path} doesn't exist… skipping.`);
}
fields.forEach((field) => {
let fieldPath = field.split('.');
Expand All @@ -46,19 +46,19 @@ module.exports = function(vorpal, app) {
vorpal
.command('version')
.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
// semver adds are of the form -0, but we've used -alpha.0 or -rc.0.
// 'prerelease' will increment those properly (but otherwise has the same problem).
// Live with it for now since it won't be super common. Write docs.
let choices = ['prerelease' , 'patch', 'minor', 'major'].map((release) => {
let choices = ['prerelease', 'patch', 'minor', 'major'].map((release) => {
let version = semver.inc(currentVersion, release);
return {
value: version,
name:`${chalk.bold(version)} (${release})`
name:`${chalk.bold(version)} (${release})`,
};
});
choices.push('Other');
Expand All @@ -74,8 +74,8 @@ module.exports = function(vorpal, app) {
type: 'input',
name: 'version',
message: `New version (currently ${chalk.bold(currentVersion)}): `,
when: (res) => res.version === 'Other'
}
when: (res) => res.version === 'Other',
},
]).then((res) => {
let newVersion = semver.valid(res.version);

Expand Down Expand Up @@ -118,7 +118,7 @@ module.exports = function(vorpal, app) {
// We also need to update src/ReactVersion.js which has the version in
// string form in JS code. We'll just do a string replace.

const PATH_TO_REACTVERSION = path.join(app.PATH_TO_REPO, 'src/ReactVersion.js');
const PATH_TO_REACTVERSION = path.join(app.PATH_TO_REPO, 'src/ReactVersion.js');

let reactVersionContents = fs.readFileSync(PATH_TO_REACTVERSION, 'utf8');

Expand Down Expand Up @@ -148,8 +148,8 @@ module.exports = function(vorpal, app) {
app.execInRepo(`git tag v${newVersion}`);
}
actionCB();
})
});
});

});
}
};

0 comments on commit cfd7824

Please sign in to comment.