@@ -49,25 +49,30 @@ class WatchCommand extends BuildRunnerCommand {
4949 }
5050
5151 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+ );
6768
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+ }
7176 }
7277
7378 /// Listens to [buildResults] , handling certain types of errors and completing
@@ -83,6 +88,9 @@ class WatchCommand extends BuildRunnerCommand {
8388 completer.completeError (const BuildScriptChangedException ());
8489 } else if (result.failureType == FailureType .buildConfigChanged) {
8590 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);
8694 }
8795 }
8896 });
0 commit comments