convertVersionToMsixVersion function

String convertVersionToMsixVersion(
  1. String version
)

Implementation

String convertVersionToMsixVersion(String version) {
  final stableAndBuild = version.split('-').first;
  final buildParts = stableAndBuild.split('+');
  final coreVersion = buildParts.first;
  final parts = coreVersion.split('.');

  if (parts.length != 3) {
    throw ShipworldException('Invalid package version for MSIX: $version');
  }

  final numericParts = <int>[];

  for (final part in parts) {
    if (!_digitsPattern.hasMatch(part)) {
      throw ShipworldException('Invalid package version for MSIX: $version');
    }

    final value = int.parse(part);

    if (value < 0 || value > 65535) {
      throw ShipworldException('MSIX version segment out of range: $part');
    }

    numericParts.add(value);
  }

  var build = 0;
  if (buildParts.length > 1) {
    if (buildParts.length != 2 || !_digitsPattern.hasMatch(buildParts[1])) {
      throw ShipworldException('Invalid package version for MSIX: $version');
    }

    build = int.parse(buildParts[1]);
    if (build > 65535) {
      throw ShipworldException(
        'MSIX version segment out of range: ${buildParts[1]}',
      );
    }
  }

  return '${numericParts[0]}.${numericParts[1]}.${numericParts[2]}.$build';
}