1 | import semver from 'semver';
|
2 | import { readFile, writeFile } from './helpers/fs';
|
3 | import { execCmd } from './helpers/cp';
|
4 |
|
5 | const ROOT = process.cwd();
|
6 |
|
7 | const npmPackageFile = 'package.json';
|
8 |
|
9 | export default async function release() {
|
10 | const npmPackage = require(`${ROOT}/package.json`);
|
11 |
|
12 | let nextVersion;
|
13 | if (semver.valid(process.argv[3])) {
|
14 | nextVersion = process.argv[3];
|
15 | } else {
|
16 | nextVersion = semver.inc(npmPackage.version, process.argv[3], process.argv[4]);
|
17 | }
|
18 |
|
19 | if (!process.argv[2]) {
|
20 | console.log('Missing version. Aborting.');
|
21 | process.exit(-1);
|
22 | }
|
23 |
|
24 |
|
25 | console.log(`
|
26 | Creating a new version.
|
27 | Current version: ${npmPackage.version}
|
28 | Next version: ${nextVersion}
|
29 | `);
|
30 |
|
31 |
|
32 | console.log('Starting new Gitflow release');
|
33 | await execCmd(`git flow release start ${nextVersion}`);
|
34 | console.log('Gitflow release created');
|
35 |
|
36 | console.log('ShrinkWrap package');
|
37 | await execCmd('npm shrinkwrap');
|
38 | console.log('ShrinkWrap done');
|
39 |
|
40 | console.log('Bumping package.json');
|
41 |
|
42 | const packageData = await readFile(npmPackageFile);
|
43 | const newPackageData = packageData.replace(/.version.*$/m, `"version": "${nextVersion}",`);
|
44 |
|
45 | await writeFile(npmPackageFile, newPackageData);
|
46 | console.log('package.json bumped');
|
47 | }
|