BuilderApplication.forBuilder constructor

BuilderApplication.forBuilder(
  1. String builderKey,
  2. List<BuilderFactory> builderFactories,
  3. PackageFilter filter, {
  4. bool isOptional = false,
  5. bool hideOutput = true,
  6. InputSet defaultGenerateFor = const InputSet(),
  7. BuilderOptions defaultOptions = BuilderOptions.empty,
  8. BuilderOptions? defaultDevOptions,
  9. BuilderOptions? defaultReleaseOptions,
  10. Iterable<String> appliesBuilders = const [],
})

Implementation

factory BuilderApplication.forBuilder(
  String builderKey,
  List<BuilderFactory> builderFactories,
  PackageFilter filter, {
  bool isOptional = false,
  bool hideOutput = true,
  InputSet defaultGenerateFor = const InputSet(),
  BuilderOptions defaultOptions = BuilderOptions.empty,
  BuilderOptions? defaultDevOptions,
  BuilderOptions? defaultReleaseOptions,
  Iterable<String> appliesBuilders = const [],
}) {
  var phaseFactories = builderFactories.map((builderFactory) {
    return (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();
      _validateBuilder(builder);
      return InBuildPhase(builder, package.name,
          builderKey: builderKey,
          targetSources: targetSources,
          generateFor: generateFor,
          builderOptions: optionsWithDefaults,
          hideOutput: hideOutput,
          isOptional: isOptional);
    };
  }).toList();
  return BuilderApplication._(
      builderKey, phaseFactories, filter, hideOutput, appliesBuilders);
}