@@ -49,25 +49,30 @@ class WatchCommand extends BuildRunnerCommand {
49
49
}
50
50
51
51
Future <int > _run (WatchOptions options) async {
52
- var handler = await watch (
53
- builderApplications,
54
- enableLowResourcesMode: options.enableLowResourcesMode,
55
- configKey: options.configKey,
56
- buildDirs: options.buildDirs,
57
- outputSymlinksOnly: options.outputSymlinksOnly,
58
- packageGraph: packageGraph,
59
- trackPerformance: options.trackPerformance,
60
- skipBuildScriptCheck: options.skipBuildScriptCheck,
61
- verbose: options.verbose,
62
- builderConfigOverrides: options.builderConfigOverrides,
63
- isReleaseBuild: options.isReleaseBuild,
64
- logPerformanceDir: options.logPerformanceDir,
65
- buildFilters: options.buildFilters,
66
- );
52
+ while (true ) {
53
+ final handler = await watch (
54
+ builderApplications,
55
+ enableLowResourcesMode: options.enableLowResourcesMode,
56
+ configKey: options.configKey,
57
+ buildDirs: options.buildDirs,
58
+ outputSymlinksOnly: options.outputSymlinksOnly,
59
+ packageGraph: packageGraph,
60
+ trackPerformance: options.trackPerformance,
61
+ skipBuildScriptCheck: options.skipBuildScriptCheck,
62
+ verbose: options.verbose,
63
+ builderConfigOverrides: options.builderConfigOverrides,
64
+ isReleaseBuild: options.isReleaseBuild,
65
+ logPerformanceDir: options.logPerformanceDir,
66
+ buildFilters: options.buildFilters,
67
+ );
67
68
68
- final completer = Completer <int >();
69
- handleBuildResultsStream (handler.buildResults, completer);
70
- return completer.future;
69
+ final completer = Completer <int >();
70
+ handleBuildResultsStream (handler.buildResults, completer);
71
+ final result = await completer.future;
72
+ if (result != ExitCode .tempFail.code) {
73
+ return result;
74
+ }
75
+ }
71
76
}
72
77
73
78
/// Listens to [buildResults] , handling certain types of errors and completing
@@ -83,6 +88,9 @@ class WatchCommand extends BuildRunnerCommand {
83
88
completer.completeError (const BuildScriptChangedException ());
84
89
} else if (result.failureType == FailureType .buildConfigChanged) {
85
90
completer.completeError (const BuildConfigChangedException ());
91
+ } else if (result.failureType == FailureType .watcherRestarted) {
92
+ // TODO(davidmorgan): don't communicate using errors.
93
+ completer.complete (ExitCode .tempFail.code);
86
94
}
87
95
}
88
96
});
0 commit comments