upgrade method

String upgrade(
  1. String release, {
  2. int step = 1,
})

Upgrade version to the next

Implementation

String upgrade(String release, {int step = 1}) {
  List<String> parts = this.split('+');
  String version = parts.first;
  List<String> nums = version.split('.');

  int major = int.parse(nums[0]);
  int minor = int.parse(nums[1]);
  int bugfix = int.parse(nums[2]);

  late int build;
  if (parts.length > 1) {
    build = int.parse(parts.last);
    build++;
  } else {
    build = 1;
  }

  late String newVersion;
  switch (release) {
    case 'major':
      newVersion = "${major += step}.0.0";
      break;
    case 'minor':
      newVersion = "$major.${minor += step}.0";
      break;
    default:
      newVersion = "$major.$minor.${bugfix += step}";
  }

  return '$newVersion+$build';
}