loadPluginsFromDir function
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;
}