Skip to content

Commit c9d10f2

Browse files
committed
ci: publish script now checks version and tag together
1 parent bb56f80 commit c9d10f2

File tree

1 file changed

+26
-1
lines changed

1 file changed

+26
-1
lines changed

scripts/publish.ts

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,15 @@
88
// tslint:disable:no-implicit-dependencies
99
import { logging, tags } from '@angular-devkit/core';
1010
import { spawnSync } from 'child_process';
11+
import * as semver from 'semver';
1112
import { packages } from '../lib/packages';
1213
import build from './build';
1314

1415

1516
export interface PublishArgs {
1617
tag?: string;
1718
branchCheck?: boolean;
19+
versionCheck?: boolean;
1820
}
1921

2022

@@ -51,11 +53,34 @@ function _branchCheck(args: PublishArgs, logger: logging.Logger) {
5153
}
5254

5355

56+
function _versionCheck(args: PublishArgs, logger: logging.Logger) {
57+
logger.info('Checking version...');
58+
// Find _any_ version that's beta or RC.
59+
let betaOrRc = false;
60+
let version = '';
61+
Object.keys(packages).forEach((name: string) => {
62+
// If there's _ANY_ prerelease information, it's on.
63+
if (semver.prerelease(packages[name].version)) {
64+
betaOrRc = true;
65+
version = packages[name].version;
66+
}
67+
});
68+
69+
if (betaOrRc && args.tag !== 'next') {
70+
throw new Error(tags.oneLine`
71+
Releasing version ${JSON.stringify(version)} requires a next tag.
72+
Use --versionCheck=false to skip this check.
73+
`);
74+
}
75+
}
76+
5477
export default async function (args: PublishArgs, logger: logging.Logger) {
5578
if (args.branchCheck === undefined || args.branchCheck === true) {
5679
_branchCheck(args, logger);
5780
}
58-
81+
if (args.versionCheck === undefined || args.versionCheck === true) {
82+
_versionCheck(args, logger);
83+
}
5984

6085
logger.info('Building...');
6186
await build({}, logger.createChild('build'));

0 commit comments

Comments
 (0)