parseManifest function
Parse a plugin manifest from a JSON map.
Returns a PluginManifest with sensible defaults for missing fields.
Implementation
PluginManifest parseManifest(Map<String, dynamic> json) {
final authorRaw = json['author'];
PluginAuthor? author;
if (authorRaw is String) {
author = PluginAuthor(name: authorRaw);
} else if (authorRaw is Map<String, dynamic>) {
author = PluginAuthor(
name: authorRaw['name'] as String? ?? 'unknown',
email: authorRaw['email'] as String?,
url: authorRaw['url'] as String?,
);
}
return PluginManifest(
name: json['name'] as String? ?? 'unknown',
version: json['version'] as String? ?? '0.0.0',
description: json['description'] as String?,
author: author,
commands:
(json['commands'] as List?)?.cast<String>() ?? const [],
skills: (json['skills'] as List?)?.cast<String>() ?? const [],
hooks: (json['hooks'] as List?)?.cast<String>() ?? const [],
mcpServers:
(json['mcpServers'] as List?)?.cast<String>() ?? const [],
outputStyles:
(json['outputStyles'] as List?)?.cast<String>() ?? const [],
);
}