1111 */
1212import { execSync } from "child_process" ;
1313import * as semver from "semver" ;
14+ import { calculateVersion } from "./calculate-version.js" ;
1415
1516async function getLatestVersion ( tag ) {
1617 try {
@@ -30,69 +31,8 @@ async function getLatestVersion(tag) {
3031 }
3132}
3233
33- async function main ( ) {
34- const command = process . argv [ 2 ] ;
35- const validCommands = [ "current" , "current-prerelease" , "latest" , "prerelease" , "unstable" ] ;
36- if ( ! validCommands . includes ( command ) ) {
37- console . error (
38- `Invalid argument, must be one of: ${ validCommands . join ( ", " ) } , got: "${ command } "`
39- ) ;
40- process . exit ( 1 ) ;
41- }
42-
43- const latest = await getLatestVersion ( "latest" ) ;
44- if ( ! latest ) {
45- console . error ( "No latest version found. Publish an initial version first." ) ;
46- process . exit ( 1 ) ;
47- }
48-
49- // Output the current latest version to stdout
50- if ( command === "current" ) {
51- console . log ( latest ) ;
52- return ;
53- }
54-
55- const prerelease = await getLatestVersion ( "prerelease" ) ;
56-
57- // Use latest if no prerelease exists, or compare to find higher
58- let higherVersion ;
59- if ( ! prerelease ) {
60- higherVersion = latest ;
61- } else {
62- try {
63- higherVersion = semver . gt ( latest , prerelease ) ? latest : prerelease ;
64- } catch ( err ) {
65- console . error (
66- `Failed to compare versions "${ latest } " and "${ prerelease } ": ${ err . message } `
67- ) ;
68- process . exit ( 1 ) ;
69- }
70- }
71-
72- // Output the most recent version including prerelease versions to stdout
73- if ( command === "current-prerelease" ) {
74- console . log ( higherVersion ) ;
75- return ;
76- }
77-
78- if ( command === "unstable" ) {
79- const unstable = await getLatestVersion ( "unstable" ) ;
80- if ( unstable && semver . gt ( unstable , higherVersion ) ) {
81- higherVersion = unstable ;
82- }
83- }
84-
85- const increment = command === "latest" ? "patch" : "prerelease" ;
86- const prereleaseIdentifier =
87- command === "prerelease" ? "preview" : command === "unstable" ? "unstable" : undefined ;
88- const nextVersion = semver . inc ( higherVersion , increment , prereleaseIdentifier ) ;
89- if ( ! nextVersion ) {
90- console . error ( `Failed to increment version "${ higherVersion } " with "${ increment } "` ) ;
91- process . exit ( 1 ) ;
92- }
93-
94- // Output the next version to stdout
95- console . log ( nextVersion ) ;
96- }
97-
98- void main ( ) ;
34+ const command = process . argv [ 2 ] ;
35+ const latest = await getLatestVersion ( "latest" ) ;
36+ const prerelease = await getLatestVersion ( "prerelease" ) ;
37+ const unstable = command === "unstable" ? await getLatestVersion ( "unstable" ) : undefined ;
38+ console . log ( calculateVersion ( command , { latest, prerelease, unstable } ) ) ;
0 commit comments