bumpVersionLine function

String bumpVersionLine(
  1. String line,
  2. BumpType type
)

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';
}