resolveVersion method
Resolve a semver constraint to the best (highest) matching version.
Implementation
Future<PubVersionInfo> resolveVersion(
String packageName,
String constraint,
) async {
final versions = await getVersions(packageName);
final vc = VersionConstraint.parse(constraint);
PubVersionInfo? best;
Version? bestVersion;
for (final info in versions) {
final v = Version.parse(info.version);
if (vc.allows(v)) {
if (bestVersion == null || v > bestVersion) {
best = info;
bestVersion = v;
}
}
}
if (best == null) {
throw StateError(
'No version of "$packageName" matches constraint "$constraint". '
'Available: ${versions.map((v) => v.version).join(', ')}',
);
}
return best;
}