build method

  1. @override
Future<void> build(
  1. BuildStep buildStep
)

Generates the outputs for a given BuildStep.

Implementation

@override
Future<void> build(BuildStep buildStep) async {
  final package = buildStep.inputId.package;
  if (!packagesToIndex.contains(buildStep.inputId.package)) return;

  final output = buildStep.allowedOutputs.single;
  final publicLibraries = <PublicLibrary>[];

  if (package == r'$sdk') {
    await for (final library in buildStep.resolver.libraries) {
      if (library.name case final name?) {
        publicLibraries.add(PublicLibrary(AssetId(package, name), library));
      }
    }
  } else {
    final src = Glob('lib/src/**');

    await for (final input in buildStep.findAssets(Glob('lib/**.dart'))) {
      if (src.matches(input.path)) continue;

      final library = await buildStep.resolver.libraryFor(input);
      publicLibraries.add(PublicLibrary(input, library));
    }
  }

  await buildStep.writeAsString(output, json.encode(publicLibraries));
}