fromBundle method
FR-META-003 — extract metadata from a bundle manifest.
Implementation
AppMetadata fromBundle(McpBundle bundle, BundleUriResolver uriResolver) {
String? resolveUri(String? raw) {
if (raw == null) return null;
if (!raw.startsWith('bundle://')) return raw;
try {
return uriResolver.resolve(raw).target.toString();
} catch (e) {
_logger.warn('metadata.bundle.uri.miss', {'uri': raw});
return raw;
}
}
final m = bundle.manifest;
return AppMetadata(
appId: m.id,
sourceKind: 'localBundle',
name: m.name,
version: m.version,
description: m.description,
iconUri: resolveUri(m.icon),
splashUri: resolveUri(m.splash?.image),
screenshots:
m.screenshots.map((s) => resolveUri(s) ?? s).toList(growable: false),
category: m.category?.name,
publisher: m.publisher?.name,
homepage: m.homepage,
privacyPolicy: m.privacyPolicy,
extra: m.metadata,
);
}