determineVersionToOffer function

List<NewVersion> determineVersionToOffer(
  1. Version currentVersion
)

Implementation

List<NewVersion> determineVersionToOffer(Version currentVersion) {
  final newVersions = <NewVersion>[];

  if (!currentVersion.isPreRelease) {
    return defaultVersionToOffer(currentVersion, includePre: true);
  } else {
    final pre = currentVersion.preRelease;

    /// we only know how to handle pre of the form 'beta.1'.
    if (pre.length != 2 || pre[0] is! String || pre[1] is! int) {
      /// don't know how to handle pre-release versions that don't
      /// start with a string such as dev, alpha or beta
      return defaultVersionToOffer(currentVersion, includePre: true);
    }
    final type = pre[0] as String;
    final preVersion = pre[1] as int;
    switch (type) {
      case 'beta':
        newVersions.addAll([
          NewVersion('Small Patch'.padRight(25),
              buildPre(currentVersion, 'beta', preVersion + 1))
        ]);
        break;
      case 'alpha':
        newVersions.addAll([
          NewVersion('Alpha'.padRight(25),
              buildPre(currentVersion, 'alpha', preVersion + 1)),
          NewVersion('Beta'.padRight(25), buildPre(currentVersion, 'beta', 1))
        ]);
        break;
      default:
        newVersions.addAll([
          NewVersion('Small Patch'.padRight(25),
              buildPre(currentVersion, 'dev', preVersion + 1)),
          NewVersion(
              'Alpha'.padRight(25), buildPre(currentVersion, 'alpha', 1)),
          NewVersion('Beta'.padRight(25), buildPre(currentVersion, 'beta', 1))
        ]);

        /// if we don't know the type we treat it as dev.
        break;
    }

    newVersions.addAll(defaultVersionToOffer(currentVersion));
  }

  return newVersions;
}