Merge pull request #1092 from 0xProject/addFlagToPublishReleases

Add Flag to publish releases command-line tool
This commit is contained in:
Fabio Berger 2018-09-26 13:50:08 +01:00 committed by GitHub
commit 13aa98f0f3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 23 additions and 4 deletions

View File

@ -1,3 +1,4 @@
import * as _ from 'lodash';
import * as yargs from 'yargs'; import * as yargs from 'yargs';
import { publishReleaseNotesAsync } from './utils/github_release_utils'; import { publishReleaseNotesAsync } from './utils/github_release_utils';
@ -9,14 +10,25 @@ const args = yargs
type: 'boolean', type: 'boolean',
demandOption: true, demandOption: true,
}) })
.example('$0 --isDryRun true', 'Full usage example').argv; .option('packages', {
describe:
'Space-separated list of packages to generated release notes for. If not supplied, it does all `Lerna updated` packages.',
type: 'string',
})
.example('$0 --isDryRun true --packages "0x.js @0xproject/web3-wrapper"', 'Full usage example').argv;
(async () => { (async () => {
const isDryRun = args.isDryRun; const isDryRun = args.isDryRun;
const shouldIncludePrivate = false; let packages;
const allUpdatedPackages = await utils.getUpdatedPackagesAsync(shouldIncludePrivate); if (_.isUndefined(args.packages)) {
const shouldIncludePrivate = false;
packages = await utils.getUpdatedPackagesAsync(shouldIncludePrivate);
} else {
const packageNames = args.packages.split(' ');
packages = await utils.getPackagesByNameAsync(packageNames);
}
await publishReleaseNotesAsync(allUpdatedPackages, isDryRun); await publishReleaseNotesAsync(packages, isDryRun);
process.exit(0); process.exit(0);
})().catch(err => { })().catch(err => {
utils.log(err); utils.log(err);

View File

@ -54,6 +54,13 @@ export const utils = {
} }
return packages; return packages;
}, },
async getPackagesByNameAsync(packageNames: string[]): Promise<Package[]> {
const allPackages = utils.getPackages(constants.monorepoRootPath);
const updatedPackages = _.filter(allPackages, pkg => {
return _.includes(packageNames, pkg.packageJson.name);
});
return updatedPackages;
},
async getUpdatedPackagesAsync(shouldIncludePrivate: boolean): Promise<Package[]> { async getUpdatedPackagesAsync(shouldIncludePrivate: boolean): Promise<Package[]> {
const updatedPublicPackages = await utils.getLernaUpdatedPackagesAsync(shouldIncludePrivate); const updatedPublicPackages = await utils.getLernaUpdatedPackagesAsync(shouldIncludePrivate);
const updatedPackageNames = _.map(updatedPublicPackages, pkg => pkg.name); const updatedPackageNames = _.map(updatedPublicPackages, pkg => pkg.name);