BuildConfig constructor

BuildConfig({
  1. String? packageName,
  2. required Map<String, BuildTarget> buildTargets,
  3. Map<String, GlobalBuilderConfig>? globalOptions,
  4. Map<String, BuilderDefinition>? builderDefinitions,
  5. Map<String, PostProcessBuilderDefinition>? postProcessBuilderDefinitions = const {},
  6. List<String> additionalPublicAssets = const [],
})

Implementation

BuildConfig({
  String? packageName,
  required Map<String, BuildTarget> buildTargets,
  Map<String, GlobalBuilderConfig>? globalOptions,
  Map<String, BuilderDefinition>? builderDefinitions,
  Map<String, PostProcessBuilderDefinition>? postProcessBuilderDefinitions =
      const {},
  this.additionalPublicAssets = const [],
})  : buildTargets =
          identical(buildTargets, BuildConfig._placeholderBuildTarget)
              ? {
                  _defaultTarget(packageName ?? currentPackage): BuildTarget(
                    dependencies: currentPackageDefaultDependencies,
                  )
                }
              : buildTargets,
      globalOptions = (globalOptions ?? const {}).map((key, config) =>
          MapEntry(normalizeBuilderKeyUsage(key, currentPackage), config)),
      builderDefinitions = _normalizeBuilderDefinitions(
          builderDefinitions ?? const {}, packageName ?? currentPackage),
      postProcessBuilderDefinitions = _normalizeBuilderDefinitions(
          postProcessBuilderDefinitions ?? const {},
          packageName ?? currentPackage),
      packageName = packageName ?? currentPackage {
  // Set up the expandos for all our build targets and definitions so they
  // can know which package and builder key they refer to.
  this.buildTargets.forEach((key, target) {
    packageExpando[target] = this.packageName;
    builderKeyExpando[target] = key;
  });
  this.builderDefinitions.forEach((key, definition) {
    packageExpando[definition] = this.packageName;
    builderKeyExpando[definition] = key;
  });
  this.postProcessBuilderDefinitions.forEach((key, definition) {
    packageExpando[definition] = this.packageName;
    builderKeyExpando[definition] = key;
  });
}