@@ -5,24 +5,6 @@ let rescriptCoreVersionRange = ">=1.0.0"
55
66type versions = {rescriptVersion : string , rescriptCoreVersion : string }
77
8- let getPackageVersions = async (packageName , range ) => {
9- let {stdout } = await Node .Promisified .ChildProcess .exec (` npm view ${packageName} versions --json` )
10-
11- let versions = switch JSON .parseExn (stdout ) {
12- | Array (versions ) =>
13- versions -> Array .filterMap (json =>
14- switch json {
15- | String (version ) if version -> CompareVersions .satisfies (range ) => Some (version )
16- | _ => None
17- }
18- )
19- | _ => []
20- }
21-
22- versions -> Array .reverse
23- versions
24- }
25-
268let getCompatibleRescriptCoreVersions = (~rescriptVersion , ~rescriptCoreVersions ) =>
279 if CompareVersions .compareVersions (rescriptVersion , "11.1.0" )-> Ordering .isLess {
2810 rescriptCoreVersions -> Array .filter (coreVersion =>
@@ -32,25 +14,36 @@ let getCompatibleRescriptCoreVersions = (~rescriptVersion, ~rescriptCoreVersions
3214 rescriptCoreVersions
3315 }
3416
17+ let spinnerMessage = "Loading available versions..."
18+
3519let promptVersions = async () => {
3620 let s = P .spinner ()
3721
38- s -> P .Spinner .start ("Loading available versions..." )
22+ s -> P .Spinner .start (spinnerMessage )
3923
40- let (rescriptVersions , rescriptCoreVersions ) = await Promise .all2 ((
41- getPackageVersions ("rescript" , rescriptVersionRange ),
42- getPackageVersions ("@rescript/core" , rescriptCoreVersionRange ),
24+ let (rescriptVersionsResult , rescriptCoreVersionsResult ) = await Promise .all2 ((
25+ NpmRegistry . getPackageVersions ("rescript" , rescriptVersionRange ),
26+ NpmRegistry . getPackageVersions ("@rescript/core" , rescriptCoreVersionRange ),
4327 ))
4428
45- s -> P .Spinner .stop ("Versions loaded." )
29+ switch (rescriptVersionsResult , rescriptCoreVersionsResult ) {
30+ | (Ok (_ ), Ok (_ )) => s -> P .Spinner .stop ("Versions loaded." )
31+ | _ => s -> P .Spinner .stop (spinnerMessage )
32+ }
4633
47- let rescriptVersion = switch rescriptVersions {
48- | [version ] => version
49- | _ =>
34+ let rescriptVersion = switch rescriptVersionsResult {
35+ | Ok ( [version ]) => version
36+ | Ok ( rescriptVersions ) =>
5037 await P .select ({
5138 message : "ReScript version?" ,
5239 options : rescriptVersions -> Array .map (v => {P .value : v }),
5340 })-> P .resultOrRaise
41+ | Error (error ) => error -> NpmRegistry .getFetchErrorMessage -> Error .make -> Error .raise
42+ }
43+
44+ let rescriptCoreVersions = switch rescriptCoreVersionsResult {
45+ | Ok (versions ) => versions
46+ | Error (error ) => error -> NpmRegistry .getFetchErrorMessage -> Error .make -> Error .raise
5447 }
5548
5649 let rescriptCoreVersions = getCompatibleRescriptCoreVersions (
0 commit comments