generateMetadata function

Future<void> generateMetadata(
  1. LuaLike lua, {
  2. required String outputDir,
  3. Set<MetadataFormat> formats = const {MetadataFormat.html, MetadataFormat.json, MetadataFormat.luals},
  4. bool includeStdlib = true,
  5. bool split = false,
  6. String? packageName,
  7. String? packageVersion,
  8. DocPageOptions? pageOptions,
})

Generates metadata files for all libraries registered on lua.

final lua = LuaLike();
lua.vm.libraryRegistry.register(MyLibrary());

await generateMetadata(
  lua,
  outputDir: 'doc/api',
  formats: {MetadataFormat.json, MetadataFormat.luals},
  includeStdlib: false,
);

When split is false (the default), one file per format is written using the packageName as the filename. When split is true, each library gets its own file named <library_name>.<ext>.

packageName and packageVersion are auto-detected from the nearest pubspec.yaml when omitted.

Implementation

Future<void> generateMetadata(
  LuaLike lua, {
  required String outputDir,
  Set<MetadataFormat> formats = const {
    MetadataFormat.html,
    MetadataFormat.json,
    MetadataFormat.luals,
  },
  bool includeStdlib = true,
  bool split = false,
  String? packageName,
  String? packageVersion,
  DocPageOptions? pageOptions,
}) async {
  if (formats.isEmpty) return;

  final resolved = _resolvePackageInfo(
    packageName: packageName,
    packageVersion: packageVersion,
  );
  final resolvedName = resolved.$1;
  final resolvedVersion = resolved.$2;

  final allLibraries = documentedLibrariesForRuntime(lua.vm);
  final libraries = includeStdlib
      ? allLibraries
      : _filterUserLibraries(allLibraries);

  if (libraries.isEmpty) return;

  final dir = Directory(outputDir);
  if (!dir.existsSync()) {
    dir.createSync(recursive: true);
  }

  if (split) {
    await _writeSplit(
      dir,
      libraries,
      formats,
      resolvedName,
      resolvedVersion,
      pageOptions,
    );
  } else {
    await _writeCombined(
      dir,
      libraries,
      formats,
      resolvedName,
      resolvedVersion,
      pageOptions,
    );
  }
}