Unverified Commit f5fe1e3e authored by Todd Volkert's avatar Todd Volkert Committed by GitHub

Update roll_dev to work with new version numbers (#54015)

parent afed5077
...@@ -105,10 +105,10 @@ void main(List<String> args) { ...@@ -105,10 +105,10 @@ void main(List<String> args) {
exit(1); exit(1);
} }
final List<int> parts = match.groups(<int>[1, 2, 3]).map<int>(int.parse).toList(); final List<int> parts = match.groups(<int>[1, 2, 3, 4, 5]).map<int>(int.parse).toList();
if (match.group(4) == '0') { if (match.group(6) == '0') {
print('This commit has already been released, as version ${parts.join(".")}.'); print('This commit has already been released, as version ${getVersionFromParts(parts)}.');
exit(0); exit(0);
} }
...@@ -117,19 +117,25 @@ void main(List<String> args) { ...@@ -117,19 +117,25 @@ void main(List<String> args) {
parts[0] += 1; parts[0] += 1;
parts[1] = 0; parts[1] = 0;
parts[2] = 0; parts[2] = 0;
parts[3] = 0;
parts[4] = 0;
break; break;
case kY: case kY:
parts[1] += 1; parts[1] += 1;
parts[2] = 0; parts[2] = 0;
parts[3] = 0;
parts[4] = 0;
break; break;
case kZ: case kZ:
parts[2] += 1; parts[2] = 0;
parts[3] += 1;
parts[4] = 0;
break; break;
default: default:
print('Unknown increment level. The valid values are "$kX", "$kY", and "$kZ".'); print('Unknown increment level. The valid values are "$kX", "$kY", and "$kZ".');
exit(1); exit(1);
} }
version = parts.join('.'); version = getVersionFromParts(parts);
if (justPrint) { if (justPrint) {
print(version); print(version);
...@@ -138,7 +144,7 @@ void main(List<String> args) { ...@@ -138,7 +144,7 @@ void main(List<String> args) {
final String hash = getGitOutput('rev-parse HEAD', 'Get git hash for $commit'); 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 // PROMPT
...@@ -149,29 +155,38 @@ void main(List<String> args) { ...@@ -149,29 +155,38 @@ void main(List<String> args) {
'to the "dev" channel.'); 'to the "dev" channel.');
stdout.write('Are you? [yes/no] '); stdout.write('Are you? [yes/no] ');
if (stdin.readLineSync() != 'yes') { 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.'); print('The dev roll has been aborted.');
exit(0); 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'); runGit('push $origin HEAD:dev', 'land the new version on the "dev" branch');
print('Flutter version $version has been rolled to the "dev" channel!'); print('Flutter version $version has been rolled to the "dev" channel!');
} }
String getFullTag() { String getFullTag() {
return getGitOutput( return getGitOutput(
'describe --match v*.*.* --first-parent --long --tags', 'describe --match *.*.*-dev.*.* --first-parent --long --tags',
'obtain last released version number', 'obtain last released version number',
); );
} }
Match parseFullTag(String version) { 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); return versionPattern.matchAsPrefix(version);
} }
String getVersionFromParts(List<int> 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) { String getGitOutput(String command, String explanation) {
final ProcessResult result = _runGit(command); final ProcessResult result = _runGit(command);
if ((result.stderr as String).isEmpty && result.exitCode == 0) if ((result.stderr as String).isEmpty && result.exitCode == 0)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment