getVersionsForPackage static method
Gets version tags for a specific package in a workspace Tags are expected to be in format: {package-name}/v{version}
Implementation
static Future<List<(String, Version)>> getVersionsForPackage(
String? root,
String packageName, {
String tagPrefix = 'v',
}) async {
final allTags = await getTags(root);
final packageTagPrefix = '$packageName/';
final packageVersions = allTags
.where((tag) => tag.isNotEmpty && tag.startsWith(packageTagPrefix))
.map((tag) {
// Extract version part after package-name/
final versionPart = tag.substring(packageTagPrefix.length);
String version = versionPart;
if (versionPart.startsWith(tagPrefix)) {
version = versionPart.substring(tagPrefix.length);
}
try {
return (tag, Version.parse(version));
} catch (e) {
logger.detail('Skipping tag $tag. Not a valid version.');
return null;
}
})
.whereType<(String, Version)>()
.toList();
final sortedVersions = packageVersions.toList()..sort((a, b) => a.$2.compareTo(b.$2));
return sortedVersions;
}