bumpVersionLine function
Parses a version: x.y.z+N line and returns the bumped version string.
Throws FormatException if line doesn't contain a valid version.
Implementation
String bumpVersionLine(String line, BumpType type) {
final match = RegExp(r'(\d+)\.(\d+)\.(\d+)\+(\d+)').firstMatch(line);
if (match == null) {
throw FormatException('No valid "x.y.z+N" version found in: $line');
}
var major = int.parse(match.group(1)!);
var minor = int.parse(match.group(2)!);
var patch = int.parse(match.group(3)!);
var build = int.parse(match.group(4)!);
switch (type) {
case BumpType.major:
major++;
minor = 0;
patch = 0;
break;
case BumpType.minor:
minor++;
patch = 0;
break;
case BumpType.patch:
patch++;
break;
case BumpType.build:
break;
}
build++; // build number always increments
return '$major.$minor.$patch+$build';
}