in build_runner/lib/src/generate/build.dart [51:124]
Future<BuildResult> build(List<BuilderApplication> builders,
{bool? deleteFilesByDefault,
bool? assumeTty,
String? configKey,
PackageGraph? packageGraph,
RunnerAssetReader? reader,
RunnerAssetWriter? writer,
Resolvers? resolvers,
Level? logLevel,
void Function(LogRecord)? onLog,
Stream<ProcessSignal>? terminateEventStream,
bool? enableLowResourcesMode,
Set<BuildDirectory>? buildDirs,
bool? outputSymlinksOnly,
bool? trackPerformance,
bool? skipBuildScriptCheck,
bool? verbose,
bool? isReleaseBuild,
Map<String, Map<String, dynamic>>? builderConfigOverrides,
String? logPerformanceDir,
Set<BuildFilter>? buildFilters}) async {
builderConfigOverrides ??= const {};
buildDirs ??= <BuildDirectory>{};
buildFilters ??= <BuildFilter>{};
deleteFilesByDefault ??= false;
enableLowResourcesMode ??= false;
isReleaseBuild ??= 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);
var options = await BuildOptions.create(
logSubscription,
deleteFilesByDefault: deleteFilesByDefault,
packageGraph: packageGraph,
skipBuildScriptCheck: skipBuildScriptCheck,
overrideBuildConfig: await findBuildConfigOverrides(
packageGraph, environment.reader,
configKey: configKey),
enableLowResourcesMode: enableLowResourcesMode,
trackPerformance: trackPerformance,
logPerformanceDir: logPerformanceDir,
resolvers: resolvers,
);
var terminator = Terminator(terminateEventStream);
try {
var build = await BuildRunner.create(
options,
environment,
builders,
builderConfigOverrides,
isReleaseBuild: isReleaseBuild,
);
var result =
await build.run({}, buildDirs: buildDirs, buildFilters: buildFilters);
await build.beforeExit();
return result;
} finally {
await terminator.cancel();
await options.logListener.cancel();
}
}