BuilderDefinition constructor

BuilderDefinition({
  1. required List<String> builderFactories,
  2. required Map<String, List<String>> buildExtensions,
  3. required String import,
  4. String? target,
  5. AutoApply? autoApply,
  6. Iterable<String>? requiredInputs,
  7. Iterable<String>? runsBefore,
  8. Iterable<String>? appliesBuilders,
  9. bool? isOptional,
  10. BuildTo? buildTo,
  11. TargetBuilderConfigDefaults? defaults,
})

Implementation

BuilderDefinition({
  required this.builderFactories,
  required this.buildExtensions,
  required this.import,
  String? target,
  AutoApply? autoApply,
  Iterable<String>? requiredInputs,
  Iterable<String>? runsBefore,
  Iterable<String>? appliesBuilders,
  bool? isOptional,
  BuildTo? buildTo,
  TargetBuilderConfigDefaults? defaults,
})  :
      // ignore: deprecated_member_use
      target = target != null
          ? normalizeTargetKeyUsage(target, currentPackage)
          : null,
      autoApply = autoApply ?? AutoApply.none,
      requiredInputs = requiredInputs?.toList() ?? const [],
      runsBefore = runsBefore
              ?.map((builder) =>
                  normalizeBuilderKeyUsage(builder, currentPackage))
              .toList() ??
          const [],
      appliesBuilders = appliesBuilders
              ?.map((builder) =>
                  normalizeBuilderKeyUsage(builder, currentPackage))
              .toList() ??
          const [],
      isOptional = isOptional ?? false,
      buildTo = buildTo ?? BuildTo.cache,
      defaults = defaults ?? const TargetBuilderConfigDefaults() {
  if (builderFactories.isEmpty) {
    throw ArgumentError.value(builderFactories, 'builderFactories',
        'Must have at least one value.');
  }
  if (buildExtensions.entries.any((e) => e.value.contains(e.key))) {
    throw ArgumentError.value(
        buildExtensions,
        'buildExtensions',
        'May not overwrite an input, '
            'the output extensions must not contain the input extension');
  }
}