in build_runner/lib/src/generate/watch_impl.dart [33:116]
Future<ServeHandler> watch(
List<BuilderApplication> builders, {
bool? deleteFilesByDefault,
bool? assumeTty,
String? configKey,
PackageGraph? packageGraph,
RunnerAssetReader? reader,
RunnerAssetWriter? writer,
Resolvers? resolvers,
Level? logLevel,
void Function(LogRecord)? onLog,
Duration? debounceDelay,
required DirectoryWatcher Function(String) directoryWatcherFactory,
Stream<ProcessSignal>? terminateEventStream,
bool? skipBuildScriptCheck,
bool? enableLowResourcesMode,
Map<String, BuildConfig>? overrideBuildConfig,
Set<BuildDirectory>? buildDirs,
bool? outputSymlinksOnly,
bool? trackPerformance,
bool? verbose,
Map<String, Map<String, dynamic>>? builderConfigOverrides,
bool? isReleaseBuild,
String? logPerformanceDir,
Set<BuildFilter>? buildFilters,
}) async {
builderConfigOverrides ??= const {};
buildDirs ??= <BuildDirectory>{};
buildFilters ??= <BuildFilter>{};
debounceDelay ??= const Duration(milliseconds: 250);
deleteFilesByDefault ??= false;
enableLowResourcesMode ??= false;
outputSymlinksOnly ??= false;
packageGraph ??= await PackageGraph.forThisPackage();
skipBuildScriptCheck ??= false;
trackPerformance ??= false;
verbose ??= false;
var environment = OverrideableEnvironment(
IOEnvironment(packageGraph,
assumeTty: assumeTty, outputSymlinksOnly: outputSymlinksOnly),
reader: reader,
writer: writer,
onLog: onLog ?? stdIOLogListener(assumeTty: assumeTty, verbose: verbose));
var logSubscription =
LogSubscription(environment, verbose: verbose, logLevel: logLevel);
overrideBuildConfig ??= await findBuildConfigOverrides(
packageGraph, environment.reader,
configKey: configKey);
var options = await BuildOptions.create(
logSubscription,
deleteFilesByDefault: deleteFilesByDefault,
packageGraph: packageGraph,
overrideBuildConfig: overrideBuildConfig,
debounceDelay: debounceDelay,
skipBuildScriptCheck: skipBuildScriptCheck,
enableLowResourcesMode: enableLowResourcesMode,
trackPerformance: trackPerformance,
logPerformanceDir: logPerformanceDir,
resolvers: resolvers,
);
var terminator = Terminator(terminateEventStream);
var watch = _runWatch(
options,
environment,
builders,
builderConfigOverrides,
terminator.shouldTerminate,
directoryWatcherFactory,
configKey,
buildDirs
.any((target) => target.outputLocation?.path.isNotEmpty ?? false),
buildDirs,
buildFilters,
isReleaseMode: isReleaseBuild ?? false);
unawaited(watch.buildResults.drain().then((_) async {
await terminator.cancel();
await options.logListener.cancel();
}));
return createServeHandler(watch);
}