@@ -4,41 +4,46 @@ const { logger, spawnOrFail, prompt, shouldContinuePrompt, quit, fs, process, pa
4
4
// process.chdir(path.join(__dirname, '..'));
5
5
const currentVersion = require ( '../package.json' ) . version ;
6
6
7
+ const isPreRelease = ( version ) => {
8
+ return version . split ( '.' ) [ 3 ] > 0 ;
9
+ } ;
10
+
7
11
const getNewVersion = ( currentVersion , versionIncrement ) => {
8
- const ver_arr = currentVersion . split ( '.' ) ;
12
+ const verArr = currentVersion . split ( '.' ) ;
13
+ const isBeta = isPreRelease ( currentVersion ) ;
9
14
switch ( versionIncrement ) {
10
15
case 1 : //Patch
11
- if ( ver_arr [ 3 ] ) {
16
+ if ( isBeta ) {
12
17
logger . error ( `ERROR: Cannot increase patch in pre-release version ` ) ;
13
18
return undefined ;
14
19
}
15
- ver_arr [ 2 ] = Number ( ver_arr [ 2 ] ) + 1 ;
16
- return ver_arr . join ( '.' ) ;
20
+ verArr [ 2 ] = Number ( verArr [ 2 ] ) + 1 ;
21
+ return verArr . join ( '.' ) ;
17
22
case 2 : // Minor
18
- if ( ver_arr [ 3 ] ) {
23
+ if ( isBeta ) {
19
24
logger . error ( `ERROR: Cannot increase patch in pre-release version ` ) ;
20
25
return undefined ;
21
26
}
22
- ver_arr [ 1 ] = Number ( ver_arr [ 1 ] ) + 1 ;
23
- return ver_arr . join ( '.' ) ;
27
+ verArr [ 1 ] = Number ( verArr [ 1 ] ) + 1 ;
28
+ return verArr . join ( '.' ) ;
24
29
case 3 : //Major
25
- if ( ver_arr [ 3 ] ) {
30
+ if ( isBeta ) {
26
31
return currentVersion . split ( '-' ) [ 0 ] ;
27
32
}
28
- ver_arr [ 0 ] = Number ( ver_arr [ 0 ] ) + 1 ;
29
- return ver_arr . join ( '.' ) ;
33
+ verArr [ 0 ] = Number ( verArr [ 0 ] ) + 1 ;
34
+ return verArr . join ( '.' ) ;
30
35
case 4 : // Beta
31
- if ( ver_arr [ 3 ] ) { //Existing beta
32
- ver_arr [ 3 ] = Number ( ver_arr [ 3 ] ) + 1 ;
33
- return ver_arr . join ( '.' ) ;
36
+ if ( isBeta ) { //Existing beta
37
+ verArr [ 3 ] = Number ( verArr [ 3 ] ) + 1 ;
38
+ return verArr . join ( '.' ) ;
34
39
}
35
- ver_arr [ 0 ] = Number ( ver_arr [ 0 ] ) + 1 ;
36
- return ver_arr . join ( '.' ) + '-beta.0' ;
40
+ verArr [ 0 ] = Number ( verArr [ 0 ] ) + 1 ;
41
+ return verArr . join ( '.' ) + '-beta.0' ;
37
42
default :
38
43
logger . error ( `ERROR: Invalid input: ${ versionIncrement } ` ) ;
39
44
return undefined ;
40
45
}
41
- }
46
+ } ;
42
47
43
48
const updateChangelog = ( newVersion ) => {
44
49
logger . log ( `Updating CHANGELOG.md with a new release entry - ${ newVersion } ` ) ;
@@ -53,35 +58,69 @@ const updateChangelog = (newVersion) => {
53
58
\n` ;
54
59
changeLog = changeLog . substring ( 0 , latestEntryIndex ) + newEntry + changeLog . substring ( latestEntryIndex ) ;
55
60
fs . writeFileSync ( filePath , changeLog ) ;
61
+ } ;
62
+
63
+ const updateBaseBranch = ( branchName ) => {
64
+ logger . log ( `Updating the base branch in .base-branch to ${ branchName } ` ) ;
65
+ const filePath = path . resolve ( __dirname , '../.base-branch' ) ;
66
+ fs . writeFileSync ( filePath , `origin/${ branchName } ` ) ;
56
67
}
57
68
58
- const versionBump = async ( ) => {
59
- logger . log ( 'Choose one of the following options to bump the next version:' ) ;
60
- logger . log ( ' 1. Patch' ) ;
61
- logger . log ( ' 2. Minor' ) ;
62
- logger . log ( ' 3. Major' ) ;
63
- logger . log ( ' 4. Beta' ) ;
64
- const option = await prompt ( '' ) ;
65
- const newVersion = getNewVersion ( currentVersion , Number ( option ) ) ;
69
+ const versionBump = async ( option , branchName ) => {
70
+ if ( ! option ) {
71
+ logger . log ( 'Choose one of the following options to bump the next version:' ) ;
72
+ logger . log ( ' 1. Patch' ) ;
73
+ logger . log ( ' 2. Minor' ) ;
74
+ logger . log ( ' 3. Major' ) ;
75
+ logger . log ( ' 4. Beta' ) ;
76
+ option = Number ( await prompt ( '' ) ) ;
77
+ }
78
+ const newVersion = getNewVersion ( currentVersion , option ) ;
66
79
if ( ! newVersion ) {
67
80
quit ( 1 ) ;
68
81
}
82
+
83
+ branchName = branchName ? branchName : 'version-bump' ;
84
+
85
+ const prevReleaseBranch = ! isPreRelease ( currentVersion ) && ( option === 3 || option === 4 )
86
+ ? `release-${ currentVersion . split ( '.' ) [ 0 ] } .x`
87
+ : '' ;
88
+
69
89
logger . warn ( 'Warning: you are bumping the version\n' ) ;
70
90
logger . warn ( ` From: ${ currentVersion } \n` ) ;
71
91
logger . warn ( ` To: ${ newVersion } \n` ) ;
72
- await shouldContinuePrompt ( 'Type \'yes\' to continue\n' ) ;
92
+ if ( prevReleaseBranch ) {
93
+ logger . warn ( ` This will also create ${ prevReleaseBranch } branch.` ) ;
94
+ }
95
+ await shouldContinuePrompt ( ) ;
96
+
97
+ if ( prevReleaseBranch ) {
98
+ const currentBranch = ( spawnOrFail ( 'git' , [ ' branch --show-current' ] , { skipOutput : true } ) ) . trim ( ) ;
99
+ spawnOrFail ( 'git' , [ `checkout -b ${ prevReleaseBranch } ` ] ) ;
100
+ updateBaseBranch ( prevReleaseBranch ) ;
101
+ spawnOrFail ( 'git' , [ 'add -A' ] ) ;
102
+ spawnOrFail ( 'git' , [ `commit -m "Update base branch to ${ prevReleaseBranch } "` ] ) ;
103
+ spawnOrFail ( 'git' , [ `push origin HEAD:${ prevReleaseBranch } -f` ] ) ;
104
+ logger . log ( `Branch ${ prevReleaseBranch } is created. Please make sure to set branch protection.` ) ;
105
+
106
+ //Switch back to the local branch
107
+ spawnOrFail ( 'git' , [ `checkout ${ currentBranch } ` ] ) ;
108
+ }
109
+
73
110
spawnOrFail ( 'npm' , [ `version ${ newVersion } --no-git-tag-version` ] ) ;
74
111
updateChangelog ( newVersion ) ;
75
112
76
113
logger . log ( 'Committing version bump...' ) ;
77
114
spawnOrFail ( 'git' , [ 'add -A' ] ) ;
78
115
spawnOrFail ( 'git' , [ `commit -m "Version bump for amazon-chime-sdk-js@${ newVersion } "` ] ) ;
79
- logger . log ( 'Do you want to upload these files to version-bump branch' ) ;
80
- await shouldContinuePrompt ( 'Type \'yes\' to continue\n' ) ;
81
- spawnOrFail ( 'git' , [ 'push origin HEAD:version-bump -f' ] ) ;
82
- }
116
+ logger . log ( `Do you want to upload these files to ${ branchName } branch?\n` ) ;
117
+ await shouldContinuePrompt ( ) ;
118
+ spawnOrFail ( 'git' , [ `push origin HEAD:${ branchName } -f` ] ) ;
119
+ logger . log ( 'Please create a pull request to merge the version bump to main.' ) ;
120
+ } ;
83
121
84
122
module . exports = {
85
123
versionBump,
86
124
currentVersion,
87
- }
125
+ updateBaseBranch
126
+ } ;
0 commit comments