From f5fe1e3e62efab70ec41f0176b4d54039147e65a Mon Sep 17 00:00:00 2001 From: Todd Volkert Date: Sat, 4 Apr 2020 21:28:34 -0700 Subject: [PATCH] Update roll_dev to work with new version numbers (#54015) --- dev/tools/lib/roll_dev.dart | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/dev/tools/lib/roll_dev.dart b/dev/tools/lib/roll_dev.dart index b073e3eb40..b37e992022 100644 --- a/dev/tools/lib/roll_dev.dart +++ b/dev/tools/lib/roll_dev.dart @@ -105,10 +105,10 @@ void main(List args) { exit(1); } - final List parts = match.groups([1, 2, 3]).map(int.parse).toList(); + final List parts = match.groups([1, 2, 3, 4, 5]).map(int.parse).toList(); - if (match.group(4) == '0') { - print('This commit has already been released, as version ${parts.join(".")}.'); + if (match.group(6) == '0') { + print('This commit has already been released, as version ${getVersionFromParts(parts)}.'); exit(0); } @@ -117,19 +117,25 @@ void main(List args) { parts[0] += 1; parts[1] = 0; parts[2] = 0; + parts[3] = 0; + parts[4] = 0; break; case kY: parts[1] += 1; parts[2] = 0; + parts[3] = 0; + parts[4] = 0; break; case kZ: - parts[2] += 1; + parts[2] = 0; + parts[3] += 1; + parts[4] = 0; break; default: print('Unknown increment level. The valid values are "$kX", "$kY", and "$kZ".'); exit(1); } - version = parts.join('.'); + version = getVersionFromParts(parts); if (justPrint) { print(version); @@ -138,7 +144,7 @@ void main(List args) { final String hash = getGitOutput('rev-parse HEAD', 'Get git hash for $commit'); - runGit('tag v$version', 'tag the commit with the version label'); + runGit('tag $version', 'tag the commit with the version label'); // PROMPT @@ -149,29 +155,38 @@ void main(List args) { 'to the "dev" channel.'); stdout.write('Are you? [yes/no] '); if (stdin.readLineSync() != 'yes') { - runGit('tag -d v$version', 'remove the tag you did not want to publish'); + runGit('tag -d $version', 'remove the tag you did not want to publish'); print('The dev roll has been aborted.'); exit(0); } } - runGit('push $origin v$version', 'publish the version'); + runGit('push $origin $version', 'publish the version'); runGit('push $origin HEAD:dev', 'land the new version on the "dev" branch'); print('Flutter version $version has been rolled to the "dev" channel!'); } String getFullTag() { return getGitOutput( - 'describe --match v*.*.* --first-parent --long --tags', + 'describe --match *.*.*-dev.*.* --first-parent --long --tags', 'obtain last released version number', ); } Match parseFullTag(String version) { - final RegExp versionPattern = RegExp(r'^v([0-9]+)\.([0-9]+)\.([0-9]+)-([0-9]+)-g([a-f0-9]+)$'); + final RegExp versionPattern = RegExp(r'^([0-9]+)\.([0-9]+)\.([0-9]+)-dev\.([0-9]+)\.([0-9]+)-([0-9]+)-g([a-f0-9]+)$'); return versionPattern.matchAsPrefix(version); } +String getVersionFromParts(List parts) { + assert(parts.length == 5); + final StringBuffer buf = StringBuffer() + ..write(parts.take(3).join('.')) + ..write('-dev.') + ..write(parts.skip(3).join('.')); + return buf.toString(); +} + String getGitOutput(String command, String explanation) { final ProcessResult result = _runGit(command); if ((result.stderr as String).isEmpty && result.exitCode == 0)