Skip to content
This repository was archived by the owner on Oct 11, 2020. It is now read-only.

Commit 95e230b

Browse files
authored
Cleanup the hidden esy root before bsb setup (#53)
1 parent f645de6 commit 95e230b

File tree

8 files changed

+94
-20
lines changed

8 files changed

+94
-20
lines changed

package-lock.json

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@
119119
"dependencies": {
120120
"request": "^2.88.0",
121121
"request-progress": "^3.0.0",
122-
"rimraf": "^3.0.0",
122+
"rimraf": "^3.0.2",
123123
"semver": "^6.3.0",
124124
"uuid": "^3.3.3",
125125
"vscode-languageclient": "^5.2.1"

src/Setup.bs.js

Lines changed: 28 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Setup.re

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ module Opam = {
6666
module Bsb = {
6767
module E = {
6868
type t =
69+
| RimrafFailed(string)
6970
| SetupChainFailure(string)
7071
| CacheFailure(string)
7172
| EsyBuildFailure
@@ -76,6 +77,7 @@ module Bsb = {
7677
| Failure(string);
7778
let toString =
7879
fun
80+
| RimrafFailed(msg) => {j| Rimraf failed before the bsb toolchain setup: $msg |j}
7981
| SetupChainFailure(msg) => {j|Setup failed: $msg|j}
8082
| EsyBuildFailure => "'esy install' failed"
8183
| EsyImportDependenciesFailure => "'esy import-dependencies' failed"
@@ -119,7 +121,19 @@ module Bsb = {
119121
/* fun */
120122
/* | Ok(x) => f(x) */
121123
/* | Error(e) => Js.Promise.resolve(Error(e)); */
122-
Fs.mkdir(~p=true, hiddenEsyRoot)
124+
Rimraf.run(hiddenEsyRoot)
125+
|> then_(
126+
fun
127+
| Error () => Error(E.RimrafFailed(hiddenEsyRoot)) |> resolve
128+
| Ok () =>
129+
Fs.mkdir(~p=true, hiddenEsyRoot)
130+
|> then_(
131+
fun
132+
| Ok () => resolve(Ok())
133+
| Error(Fs.E.PathNotFound) =>
134+
Error(E.InvalidPath(hiddenEsyRoot)) |> resolve,
135+
),
136+
)
123137
|> then_(
124138
fun
125139
| Error(e) => Error(e) |> resolve
@@ -131,8 +145,7 @@ module Bsb = {
131145
)
132146
|> then_(
133147
fun
134-
| Error(Fs.E.PathNotFound) =>
135-
Error(E.InvalidPath(hiddenEsyRoot)) |> resolve
148+
| Error(e) => Error(e) |> resolve
136149
| Ok () => {
137150
Command.Esy.install(~p=hiddenEsyRoot)
138151
|> then_(

src/bindings/Bindings.bs.js

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/bindings/Bindings.re

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
include Node;
22
include Semver;
33
include Vscode;
4+
include Rimraf;

src/bindings/Rimraf.bs.js

Lines changed: 25 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/bindings/Rimraf.re

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
module Rimraf = {
2+
type t;
3+
4+
[@bs.module]
5+
external run': (string, Js.Nullable.t(Error.t) => unit) => unit = "rimraf";
6+
7+
let run = p =>
8+
Js.Promise.make((~resolve, ~reject as _) =>
9+
run'(p, err => {
10+
switch (Js.Nullable.toOption(err)) {
11+
| Some(e) => resolve(. Error())
12+
| None => resolve(. Ok())
13+
}
14+
})
15+
);
16+
};

0 commit comments

Comments
 (0)