generateMetadata function
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,
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,
);
}
}