diff --git a/packages/flutter_tools/lib/src/version.dart b/packages/flutter_tools/lib/src/version.dart index f7dd6011dac2d7c70962d5fd6c681d7f7537c11a..00c8e1b98f5b1dd0705507375a521c2ebec22492 100644 --- a/packages/flutter_tools/lib/src/version.dart +++ b/packages/flutter_tools/lib/src/version.dart @@ -797,23 +797,24 @@ class GitTagVersion { ); } + /// Parse a version string for ohos. static GitTagVersion parseOhosVersion(String version) { final RegExp versionPattern = RegExp( - r'^(\d+)\.(\d+)\.(\d+)(-ohos(-\d+\.\d+\.\d+)?)?(?:-(\d+)-g([a-f0-9]+))?$'); + r'^(\d+)\.(\d+)\.(\d+)(-ohos(-\d+\.\d+\.\d+)?(-[a-zA-Z0-9.]+)?)?(?:-(\d+)-g([a-f0-9]+))?$'); final Match? match = versionPattern.firstMatch(version.trim()); if (match == null) { return const GitTagVersion.unknown(); } - final List matchGroups = match.groups([1, 2, 3, 4, 5, 6, 7]); + final List matchGroups = match.groups([1, 2, 3, 4, 5, 6, 7, 8]); final int? x = matchGroups[0] == null ? null : int.tryParse(matchGroups[0]!); final int? y = matchGroups[1] == null ? null : int.tryParse(matchGroups[1]!); final int? z = matchGroups[2] == null ? null : int.tryParse(matchGroups[2]!); final String? devString = matchGroups[3]; // count of commits past last tagged version - final int? commits = matchGroups[5] == null ? 0 : int.tryParse(matchGroups[5]!); - final String hash = matchGroups[6] ?? ''; + final int? commits = matchGroups[6] == null ? 0 : int.tryParse(matchGroups[6]!); + final String hash = matchGroups[7] ?? ''; return GitTagVersion( x: x, @@ -822,6 +823,8 @@ class GitTagVersion { commits: commits, hash: hash, gitTag: '$x.$y.$z${devString ?? ''}', // e.g. 3.7.12-ohos-1.0.0 + // e.g. 3.7.12-ohos-1.0.0-candidate.1 + // e.g. 3.7.12-ohos-1.0.0-SP1 ); }