initialPreRelease function

Version initialPreRelease(
  1. Version stable,
  2. Version? template,
  3. String preReleasePrefix
)

Implementation

Version initialPreRelease(Version stable, Version? template, String preReleasePrefix) {
  if (template != null && template.isPreRelease) {
    final parts = List<Object>.from(template.preRelease);
    if (parts.length == 1 && parts[0] is int) {
      return Version(stable.major, stable.minor, stable.patch, pre: '1');
    }
    final newParts = List<Object>.from(parts);
    newParts[newParts.length - 1] = 1;
    final pre = newParts.map((part) => part.toString()).join('.');
    return Version(stable.major, stable.minor, stable.patch, pre: pre);
  }

  final normalizedPrefix = preReleasePrefix.trim();
  final separator = normalizedPrefix.isEmpty || normalizedPrefix.endsWith('.') ? '' : '.';
  final pre = normalizedPrefix.isEmpty ? '1' : '$normalizedPrefix${separator}1';
  return Version(stable.major, stable.minor, stable.patch, pre: pre);
}