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