@@ -32,31 +32,41 @@ let rec getAffectedFiles = (root, lines) => switch lines {
32
32
let runBuildCommand = (~reportDiagnostics, state, root, buildCommand) => {
33
33
/** TODO check for a bsb.lock file & bail if it's there */
34
34
/** TODO refactor so Dune projects don't get bsconfig.json handling below */
35
- let %opt_consume (buildCommand, commandDirectory) = buildCommand;
36
- Log . log (">> Build system running: " ++ buildCommand );
37
- let (stdout , stderr , _success ) = Commands . execFull(~pwd= commandDirectory, buildCommand);
38
- Log . log(">>> stdout" );
39
- Log . log(Utils . joinLines(stdout));
40
- Log . log(">>> stderr" );
41
- Log . log(Utils . joinLines(stderr));
42
- let files = getAffectedFiles(commandDirectory, stdout @ stderr);
43
- Log . log("Affected files: " ++ String . concat(" " , files));
44
- let bsconfigJson = root /+ "bsconfig.json" |> Utils . toUri;
45
- let bsconfigClean = ref (true );
46
- files |. Belt . List . forEach(uri => {
47
- if (Utils . endsWith(uri, "bsconfig.json" )) {
48
- bsconfigClean := false ;
49
- Log . log("Bsconfig.json sending" );
50
- reportDiagnostics(
51
- uri, ` BuildFailed (stdout @ stderr)
52
- )
53
- };
54
- Hashtbl . remove(state. compiledDocuments, uri);
55
- Hashtbl . replace(state. documentTimers, uri, Unix . gettimeofday() -. 0 . 01 )
56
- });
57
- if (bsconfigClean^ ) {
58
- Log . log("Cleaning bsconfig.json" );
59
- reportDiagnostics(bsconfigJson, ` BuildSucceeded )
35
+ switch buildCommand {
36
+ | None => Ok ()
37
+ | Some ((buildCommand , commandDirectory )) =>
38
+ Log . log(">> Build system running: " ++ buildCommand);
39
+ let (stdout , stderr , _success ) = Commands . execFull(~pwd= commandDirectory, buildCommand);
40
+ Log . log(">>> stdout" );
41
+ Log . log(Utils . joinLines(stdout));
42
+ Log . log(">>> stderr" );
43
+ let errors = Utils . joinLines(stderr);
44
+ Log . log(errors);
45
+ let %try _ = if (Utils.startsWith(errors, "Error: Could not find an item in the entries field to compile to ")) {
46
+ Error ("Bsb-native " ++ errors ++ "\n Hint: check your bsconfig's \" entries\" ." )
47
+ } else {
48
+ Ok () ;
49
+ };
50
+ let files = getAffectedFiles(commandDirectory, stdout @ stderr);
51
+ Log . log("Affected files: " ++ String . concat(" " , files));
52
+ let bsconfigJson = root /+ "bsconfig.json" |> Utils . toUri;
53
+ let bsconfigClean = ref (true );
54
+ files |. Belt . List . forEach(uri => {
55
+ if (Utils . endsWith(uri, "bsconfig.json" )) {
56
+ bsconfigClean := false ;
57
+ Log . log("Bsconfig.json sending" );
58
+ reportDiagnostics(
59
+ uri, ` BuildFailed (stdout @ stderr)
60
+ )
61
+ };
62
+ Hashtbl . remove(state. compiledDocuments, uri);
63
+ Hashtbl . replace(state. documentTimers, uri, Unix . gettimeofday() -. 0 . 01 )
64
+ });
65
+ if (bsconfigClean^ ) {
66
+ Log . log("Cleaning bsconfig.json" );
67
+ reportDiagnostics(bsconfigJson, ` BuildSucceeded )
68
+ };
69
+ /* TODO report notifications here */
70
+ Ok ()
60
71
}
61
- /* TODO report notifications here */
62
72
};
0 commit comments