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

Commit cbc9dad

Browse files
authored
Fixes mkdirp, incorrect readyForDev and pins menhir to 20200123 (#51)
* Fixes mkdirp and pins menhir to 20200123 * Fixes incorrect value for `readyForDev` * Use the resolutions for esy fixture too
1 parent 20e22f0 commit cbc9dad

File tree

7 files changed

+80
-81
lines changed

7 files changed

+80
-81
lines changed

esy.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66
"@opam/ocaml-lsp-server": "prometheansacrifice/ocaml-lsp:ocaml-lsp-server.opam#d555655b1ea2e1"
77
},
88
"resolutions": {
9-
"@opam/dune": "2.0.1"
9+
"@opam/dune": "2.0.1",
10+
"@opam/menhir": "20200123",
11+
"@opam/menhirSdk": "20200123",
12+
"@opam/menhirLib": "20200123",
13+
"@opam/dune-private-libs": "2.0.1"
1014
}
1115
}

esy.lock/index.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

fixtures/sample-esy/package.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@
1919
"@opam/ocaml-lsp-server": "prometheansacrifice/ocaml-lsp:ocaml-lsp-server.opam#d555655b1ea2e1"
2020
},
2121
"resolutions": {
22-
"@opam/dune": "2.0.1"
22+
"@opam/dune": "2.0.1",
23+
"@opam/menhir": "20200123",
24+
"@opam/menhirSdk": "20200123",
25+
"@opam/menhirLib": "20200123",
26+
"@opam/dune-private-libs": "2.0.1"
2327
}
2428
}

src/ProjectType.bs.js

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

src/ProjectType.re

Lines changed: 37 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -90,48 +90,43 @@ let detect = folder => {
9090
Path.join([|folder, ".vscode", "esy"|]);
9191
esyToolChainFolder
9292
|> Fs.exists
93-
|> then_(
94-
fun
95-
| Error(e) => Error(e) |> resolve
96-
| Ok(doesToolChainEsyManifestExist) =>
97-
if (doesToolChainEsyManifestExist) {
98-
Esy.status(esyToolChainFolder)
99-
|> then_(
100-
resolve
101-
<< (
102-
fun
103-
| Error(e) =>
104-
switch (e) {
105-
| Esy.E.CmdFailed(cmd) =>
106-
Error(
107-
E.EsyStatusFailed(
108-
-1,
109-
"<unknown exec failure>",
110-
"<unknown exec failure>",
111-
),
112-
)
113-
}
114-
| Ok(
115-
(toolChainStatus: Esy.status),
116-
) =>
117-
if (!toolChainStatus.isProject) {
118-
Error(
119-
E.WeirdInvariantViolation,
120-
);
121-
} else {
122-
Ok(
123-
Bsb({
124-
readyForDev:
125-
toolChainStatus.
126-
isProjectSolved,
127-
}),
128-
);
129-
}
130-
),
131-
);
132-
} else {
133-
Ok(Bsb({readyForDev: false})) |> resolve;
134-
},
93+
|> then_(doesToolChainEsyManifestExist =>
94+
if (doesToolChainEsyManifestExist) {
95+
Esy.status(esyToolChainFolder)
96+
|> then_(
97+
resolve
98+
<< (
99+
fun
100+
| Error(e) =>
101+
switch (e) {
102+
| Esy.E.CmdFailed(cmd) =>
103+
Error(
104+
E.EsyStatusFailed(
105+
-1,
106+
"<unknown exec failure>",
107+
"<unknown exec failure>",
108+
),
109+
)
110+
}
111+
| Ok((toolChainStatus: Esy.status)) =>
112+
if (!toolChainStatus.isProject) {
113+
Error(
114+
E.WeirdInvariantViolation,
115+
);
116+
} else {
117+
Ok(
118+
Bsb({
119+
readyForDev:
120+
toolChainStatus.
121+
isProjectReadyForDev,
122+
}),
123+
);
124+
}
125+
),
126+
);
127+
} else {
128+
Ok(Bsb({readyForDev: false})) |> resolve;
129+
}
135130
);
136131
};
137132
}

src/bindings/Node.bs.js

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

src/bindings/Node.re

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -96,10 +96,10 @@ module Fs = {
9696
external readFile: string => Js.Promise.t(string) = "readFile";
9797

9898
[@bs.module "./fs-stub.js"]
99-
external mkdir': string => Js.Promise.t(result(unit, 'b)) = "mkdir";
99+
external mkdir': string => Js.Promise.t(unit) = "mkdir";
100100

101101
[@bs.module "./fs-stub.js"]
102-
external exists: string => Js.Promise.t(result(bool, 'b)) = "exists";
102+
external exists: string => Js.Promise.t(bool) = "exists";
103103

104104
[@bs.module "./fs-stub.js"]
105105
external open_: (string, string) => Js.Promise.t(fd) = "open";
@@ -125,29 +125,25 @@ module Fs = {
125125
Js.Promise.(
126126
if (forceCreate) {
127127
exists(path)
128-
|> then_(doesExist => {
129-
switch (doesExist) {
130-
| Ok(doesExist) =>
131-
if (doesExist) {
132-
resolve(Ok());
128+
|> then_(doesExist =>
129+
if (doesExist) {
130+
resolve(Ok());
131+
} else {
132+
let homePath = Sys.getenv(Sys.unix ? "HOME" : "USERPROFILE");
133+
if (path == homePath) {
134+
resolve(Error(E.PathNotFound));
133135
} else {
134-
let homePath = Sys.getenv(Sys.unix ? "HOME" : "USERPROFILE");
135-
if (path == homePath) {
136-
resolve(Error(E.PathNotFound));
137-
} else {
138-
mkdir(~p=true, Filename.dirname(path))
139-
|> then_(
140-
fun
141-
| Ok () => mkdir'(path)
142-
| Error(e) => Error(e) |> resolve,
143-
);
144-
};
145-
}
146-
| Error(e) => resolve(Error(e))
136+
mkdir(~p=true, Filename.dirname(path))
137+
|> then_(
138+
fun
139+
| Ok () => mkdir'(path) |> then_(() => resolve(Ok()))
140+
| Error(e) => Error(e) |> resolve,
141+
);
142+
};
147143
}
148-
});
144+
);
149145
} else {
150-
mkdir'(path);
146+
mkdir'(path) |> then_(() => resolve(Ok()));
151147
}
152148
);
153149
};

0 commit comments

Comments
 (0)