11import * as inquirer from "inquirer" ;
22import * as semver from "semver" ;
33import { ReleaseType , SemVer } from "semver" ; // tslint:disable-line: no-duplicate-imports
4- import { NormalizedOptions } from "./normalize-options" ;
5- import { isPrerelease , isReleaseType , releaseTypes } from "./release-type" ;
4+ import { BumpRelease , NormalizedOptions } from "./normalize-options" ;
5+ import { isPrerelease , releaseTypes } from "./release-type" ;
66
77type Params = NormalizedOptions & { oldVersion : string } ;
88type VersionAndReleaseType = [ string , ReleaseType ?] ;
@@ -15,29 +15,32 @@ type VersionAndReleaseType = [string, ReleaseType?];
1515export async function getNewVersion ( params : Params ) : Promise < VersionAndReleaseType > {
1616 let { release } = params ;
1717
18- if ( release === "prompt" ) {
19- return promptForNewVersion ( params ) ;
20- }
21- else if ( isReleaseType ( release ) ) {
22- return [ getNextVersion ( params ) , release ] ;
23- }
24- else {
25- let newSemVer = new SemVer ( release . version , true ) ;
26- return [ newSemVer . version ] ;
18+ switch ( release . type ) {
19+ case "prompt" :
20+ return promptForNewVersion ( params ) ;
21+
22+ case "version" :
23+ let newSemVer = new SemVer ( release . version , true ) ;
24+ return [ newSemVer . version ] ;
25+
26+ default :
27+ return [ getNextVersion ( params ) , release . type ] ;
2728 }
2829}
2930
3031/**
3132 * Returns the next version number of the specified type.
3233 */
33- function getNextVersion ( { oldVersion, release, preid } : Params ) : string {
34+ function getNextVersion ( { oldVersion, release } : Params ) : string {
35+ let bump = release as BumpRelease ;
36+
3437 let oldSemVer = new SemVer ( oldVersion ) ;
35- let newSemVer = oldSemVer . inc ( release as ReleaseType , preid ) ;
38+ let newSemVer = oldSemVer . inc ( bump . type as ReleaseType , bump . preid ) ;
3639
3740 if (
3841 isPrerelease ( release ) &&
3942 newSemVer . prerelease . length === 2 &&
40- newSemVer . prerelease [ 0 ] === preid &&
43+ newSemVer . prerelease [ 0 ] === bump . preid &&
4144 String ( newSemVer . prerelease [ 1 ] ) === "0"
4245 ) {
4346 // This is a special case when going from a non-prerelease version to a prerelease version.
@@ -54,10 +57,11 @@ function getNextVersion({ oldVersion, release, preid }: Params): string {
5457 * Returns the next version number for all release types.
5558 */
5659function getNextVersions ( params : Params ) : Record < ReleaseType , string > {
60+ let release = params . release as BumpRelease ;
5761 let next : Record < string , string > = { } ;
5862
59- for ( let release of releaseTypes ) {
60- next [ release ] = getNextVersion ( { ...params , release } ) ;
63+ for ( let type of releaseTypes ) {
64+ next [ type ] = getNextVersion ( { ...params , release : { ... release , type } } ) ;
6165 }
6266
6367 return next ;
0 commit comments