@@ -5,24 +5,6 @@ let rescriptCoreVersionRange = ">=1.0.0"
5
5
6
6
type versions = {rescriptVersion : string , rescriptCoreVersion : string }
7
7
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
-
26
8
let getCompatibleRescriptCoreVersions = (~rescriptVersion , ~rescriptCoreVersions ) =>
27
9
if CompareVersions .compareVersions (rescriptVersion , "11.1.0" )-> Ordering .isLess {
28
10
rescriptCoreVersions -> Array .filter (coreVersion =>
@@ -32,25 +14,36 @@ let getCompatibleRescriptCoreVersions = (~rescriptVersion, ~rescriptCoreVersions
32
14
rescriptCoreVersions
33
15
}
34
16
17
+ let spinnerMessage = "Loading available versions..."
18
+
35
19
let promptVersions = async () => {
36
20
let s = P .spinner ()
37
21
38
- s -> P .Spinner .start ("Loading available versions..." )
22
+ s -> P .Spinner .start (spinnerMessage )
39
23
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 ),
43
27
))
44
28
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
+ }
46
33
47
- let rescriptVersion = switch rescriptVersions {
48
- | [version ] => version
49
- | _ =>
34
+ let rescriptVersion = switch rescriptVersionsResult {
35
+ | Ok ( [version ]) => version
36
+ | Ok ( rescriptVersions ) =>
50
37
await P .select ({
51
38
message : "ReScript version?" ,
52
39
options : rescriptVersions -> Array .map (v => {P .value : v }),
53
40
})-> 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
54
47
}
55
48
56
49
let rescriptCoreVersions = getCompatibleRescriptCoreVersions (
0 commit comments