loadPluginsFromDir function

Future<List<LoadedPlugin>> loadPluginsFromDir(
  1. String dirPath
)

Load plugins from a dirPath directory.

Each subdirectory is treated as a potential plugin. A plugin.json manifest is loaded if present; otherwise a synthetic manifest is created from the directory name.

Implementation

Future<List<LoadedPlugin>> loadPluginsFromDir(String dirPath) async {
  final dir = Directory(dirPath);
  if (!await dir.exists()) return const [];

  final plugins = <LoadedPlugin>[];

  await for (final entity in dir.list()) {
    if (entity is! Directory) continue;

    try {
      final plugin = await _loadSinglePlugin(entity.path);
      if (plugin != null) plugins.add(plugin);
    } catch (_) {
      // Skip invalid plugins silently.
    }
  }

  return plugins;
}