77 * npx tsx scripts/bump-version.ts <bump_type> [options]
88 *
99 * Arguments:
10- * bump_type: major | minor | patch | prerelease | preview
10+ * bump_type: major | minor | patch | prerelease | preview | preview-major
1111 *
1212 * Options:
1313 * --changelog <text> Custom changelog entry
1616 *
1717 * Preview bumps (internal format):
1818 * - 0.3.0 -> 0.3.0-preview.1.0
19- * - 0.3.0-preview.1.0 -> 0.3.0-preview.1.1
19+ * - 0.3.0-preview.1.0 -> 0.3.0-preview.1.1 (preview)
20+ * - 0.3.0-preview.1.0 -> 0.3.0-preview.2.0 (preview-major)
2021 */
2122import { execSync } from 'child_process' ;
2223import { existsSync , readFileSync , writeFileSync } from 'fs' ;
@@ -25,7 +26,7 @@ import { existsSync, readFileSync, writeFileSync } from 'fs';
2526// Types
2627// ===========================
2728
28- type BumpType = 'major' | 'minor' | 'patch' | 'prerelease' | 'preview' ;
29+ type BumpType = 'major' | 'minor' | 'patch' | 'prerelease' | 'preview' | 'preview-major' ;
2930
3031interface ParsedVersion {
3132 major : number ;
@@ -175,6 +176,26 @@ function bumpVersion(current: string, bumpType: BumpType, prereleaseTag = 'beta'
175176 previewMinor : 0 ,
176177 } ) ;
177178
179+ case 'preview-major' :
180+ // Increment the major preview number and reset minor to 0
181+ if ( parsed . previewMajor !== undefined && parsed . previewMinor !== undefined ) {
182+ return formatVersion ( {
183+ major : parsed . major ,
184+ minor : parsed . minor ,
185+ patch : parsed . patch ,
186+ previewMajor : parsed . previewMajor + 1 ,
187+ previewMinor : 0 ,
188+ } ) ;
189+ }
190+ // Otherwise, start at preview.1.0
191+ return formatVersion ( {
192+ major : parsed . major ,
193+ minor : parsed . minor ,
194+ patch : parsed . patch ,
195+ previewMajor : 1 ,
196+ previewMinor : 0 ,
197+ } ) ;
198+
178199 default : {
179200 const exhaustiveCheck : never = bumpType ;
180201 throw new Error ( `Unknown bump type: ${ exhaustiveCheck as string } ` ) ;
@@ -371,7 +392,7 @@ function parseArgs(): { bumpType: BumpType; changelog?: string; prereleaseTag: s
371392Usage: npx tsx scripts/bump-version.ts <bump_type> [options]
372393
373394Arguments:
374- bump_type: major | minor | patch | prerelease | preview
395+ bump_type: major | minor | patch | prerelease | preview | preview-major
375396
376397Options:
377398 --changelog <text> Custom changelog entry
@@ -381,14 +402,15 @@ Options:
381402
382403Preview bumps:
383404 - 0.3.0 -> 0.3.0-preview.1.0
384- - 0.3.0-preview.1.0 -> 0.3.0-preview.1.1
405+ - 0.3.0-preview.1.0 -> 0.3.0-preview.1.1 (preview)
406+ - 0.3.0-preview.1.0 -> 0.3.0-preview.2.0 (preview-major)
385407` ) ;
386408 process . exit ( 0 ) ;
387409 }
388410
389411 const bumpType = args [ 0 ] as BumpType ;
390- if ( ! [ 'major' , 'minor' , 'patch' , 'prerelease' , 'preview' ] . includes ( bumpType ) ) {
391- console . error ( `Error: Invalid bump type '${ bumpType } '. Must be one of: major, minor, patch, prerelease, preview` ) ;
412+ if ( ! [ 'major' , 'minor' , 'patch' , 'prerelease' , 'preview' , 'preview-major' ] . includes ( bumpType ) ) {
413+ console . error ( `Error: Invalid bump type '${ bumpType } '. Must be one of: major, minor, patch, prerelease, preview, preview-major ` ) ;
392414 process . exit ( 1 ) ;
393415 }
394416
0 commit comments