Catalog.parse constructor
Catalog.parse(
- ConfigReader reader
Implementation
factory Catalog.parse(ConfigReader reader) {
reader.checkKeys(keys);
final environment = reader.stringMap('environment');
if (environment != null) {
final environmentReader = reader.child('environment')!;
for (final MapEntry(:key, :value) in environment.entries) {
try {
VersionConstraint.parse(value);
} on FormatException {
throw environmentReader.valueError(
key,
'"$value" is not a version constraint.',
);
}
}
}
final version = reader.string('version');
if (version != null) {
try {
Version.parse(version);
} on FormatException {
throw reader.valueError(
'version',
'"$version" is not a version. Use one like 1.2.3.',
);
}
}
final resolution = reader.string('resolution');
if (resolution != null &&
!const {'workspace', 'local', 'external'}.contains(resolution)) {
throw reader.valueError(
'resolution',
'"$resolution" is not a resolution. Use "workspace", "local", or '
'"external".',
);
}
final platforms = reader.map['platforms'];
if (platforms != null && platforms is! YamlMap) {
throw reader.valueError(
'platforms',
'expected a mapping, found ${describe(platforms)}.',
);
}
return Catalog(
environment: environment,
version: version,
publishTo: reader.string('publish_to'),
homepage: reader.string('homepage'),
repository: reader.string('repository'),
issueTracker: reader.string('issue_tracker'),
documentation: reader.string('documentation'),
topics: reader.stringList('topics'),
funding: reader.stringList('funding'),
platforms: platforms == null
? null
: toPlain(platforms) as Map<Object?, Object?>,
resolution: resolution,
dependencies: _dependencies(reader, 'dependencies'),
);
}