build method
Writes the merged content to the stand-alone file specified by outputFile.
Implementation
@override
FutureOr<void> build(BuildStep buildStep) async {
// Validate synthetic input/output.
SyntheticInput.validatePath<S>(inputFiles);
SyntheticInput.validatePath<S>(outputFile);
final libraryAssetIds = (sortAssets)
? await orderedLibraryAssetIds(buildStep)
: await this.libraryAssetIds(buildStep);
// Check if output overwrites input.
for (final libraryAssetId in libraryAssetIds) {
if (path.equals(outputFile, libraryAssetId.path)) {
throw ErrorOf<MergingBuilder>(
message: 'Output file clashes with input file!',
expectedState: 'Output files must not overwrite input files. '
'Check the [MergingBuilder] constructor argument [outputFile].',
invalidState: 'Output: $outputFile is also an input file.');
}
}
await buildStep.writeAsString(
AssetId(
buildStep.inputId.package,
outputFile,
),
arrangeContent(
await generator.generateMergedContent(
_combineStreams(buildStep, libraryAssetIds),
),
generatedBy: 'Generated by ${generator.runtimeType}.',
),
);
}