finalizeBuild method

  1. @override
Future<BuildResult> finalizeBuild(
  1. BuildResult buildResult,
  2. FinalizedAssetsView finalizedAssetsView,
  3. AssetReader reader,
  4. Set<BuildDirectory> buildDirs,
)
override

Invoked after each build, can modify the BuildResult in any way, even converting it to a failure.

The finalizedAssetsView can only be used until the returned Future completes, it will expire afterwords since it can no longer guarantee a consistent state.

By default this returns the original result.

Any operation may be performed, as determined by environment.

Implementation

@override
Future<BuildResult> finalizeBuild(
    BuildResult buildResult,
    FinalizedAssetsView finalizedAssetsView,
    AssetReader reader,
    Set<BuildDirectory> buildDirs) async {
  if (buildDirs
          .any((target) => target.outputLocation?.path.isNotEmpty ?? false) &&
      buildResult.status == BuildStatus.success) {
    if (!await createMergedOutputDirectories(buildDirs, _packageGraph, this,
        reader, finalizedAssetsView, _outputSymlinksOnly)) {
      return _convertToFailure(buildResult,
          failureType: FailureType.cantCreate);
    }
  }
  return buildResult;
}