BuilderApplication.forPostProcessBuilder constructor
BuilderApplication.forPostProcessBuilder(
- String builderKey,
- PostProcessBuilderFactory builderFactory, {
- InputSet defaultGenerateFor = const InputSet(),
- BuilderOptions defaultOptions = BuilderOptions.empty,
- BuilderOptions? defaultDevOptions,
- BuilderOptions? defaultReleaseOptions,
Note that these builder applications each create their own phase, but they will all eventually be merged into a single phase.
Implementation
factory BuilderApplication.forPostProcessBuilder(
String builderKey,
PostProcessBuilderFactory builderFactory, {
InputSet defaultGenerateFor = const InputSet(),
BuilderOptions defaultOptions = BuilderOptions.empty,
BuilderOptions? defaultDevOptions,
BuilderOptions? defaultReleaseOptions,
}) {
PostBuildPhase phaseFactory(PackageNode package, BuilderOptions options,
InputSet targetSources, InputSet? generateFor, bool isReleaseBuild) {
generateFor ??= defaultGenerateFor;
var optionsWithDefaults = defaultOptions
.overrideWith(
isReleaseBuild ? defaultReleaseOptions : defaultDevOptions)
.overrideWith(options);
if (package.isRoot) {
optionsWithDefaults =
optionsWithDefaults.overrideWith(BuilderOptions.forRoot);
}
final logger = Logger(builderKey);
final builder =
_scopeLogSync(() => builderFactory(optionsWithDefaults), logger);
if (builder == null) throw CannotBuildException();
_validatePostProcessBuilder(builder);
var builderAction = PostBuildAction(builder, package.name,
builderOptions: optionsWithDefaults,
generateFor: generateFor,
targetSources: targetSources);
return PostBuildPhase([builderAction]);
}
return BuilderApplication._(
builderKey, [phaseFactory], toNoneByDefault(), true, []);
}