Future build()

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();
  }
}