BloomModuleManifest.fromYaml constructor
BloomModuleManifest.fromYaml(
- String yamlString
Parses a BloomModuleManifest from a raw YAML string.
Throws FormatException if yamlString cannot be parsed into a YAML map.
Implementation
factory BloomModuleManifest.fromYaml(String yamlString) {
final doc = loadYaml(yamlString);
if (doc is! YamlMap && doc is! Map) {
throw FormatException('bloom.module.yaml must be a valid YAML map');
}
final name = doc['name']?.toString() ?? '';
final version = doc['version']?.toString() ?? '1.0.0';
final description = doc['description']?.toString() ?? '';
final platformsMap = doc['platforms'] is Map || doc['platforms'] is YamlMap ? doc['platforms'] : {};
final androidSpec = BloomModulePlatformSpec.fromYaml(platformsMap['android']);
final iosSpec = BloomModulePlatformSpec.fromYaml(platformsMap['ios']);
final permissionsMap = <String, BloomModulePermission>{};
if (doc['permissions'] is Map || doc['permissions'] is YamlMap) {
final perms = doc['permissions'] as Map;
perms.forEach((k, v) {
permissionsMap[k.toString()] = BloomModulePermission.fromYaml(k.toString(), v);
});
}
String? pluginClass;
if (doc['config_plugin'] is Map || doc['config_plugin'] is YamlMap) {
pluginClass = doc['config_plugin']['class_name']?.toString();
}
return BloomModuleManifest(
name: name,
version: version,
description: description,
android: androidSpec,
ios: iosSpec,
permissions: permissionsMap,
configPluginClassName: pluginClass,
);
}