[homebrew] Modify the version string when updating the version

This is a follow-up to a96b4f6 which changed the script but introduced
the bug that it no longer updated the version string in the formula.

Fixes https://github.com/dart-lang/sdk/issues/40990.

Change-Id: I272d21d2c4a44161f697ba52da6bb74b1cc7c5f9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/142147
Reviewed-by: William Hesse <whesse@google.com>
This commit is contained in:
Alexander Thomas
2020-04-03 10:32:34 +00:00
parent c4a7c3488e
commit 12f09896db
+13 -4
View File
@@ -27,19 +27,28 @@ Future<String> _getHash256(
Future<void> _updateFormula(String channel, File file, String version,
Map<String, String> hashes) async {
var contents = await file.readAsString();
// Replace the version identifier. Formulas with stable and pre-release
// versions have multiple identifiers and only the right one should be
// updated.
var versionId = channel == 'stable'
? RegExp(r'version \"\d+\.\d+.\d+\"')
: RegExp(r'version \"\d+\.\d+.\d+\-.+\"');
contents = contents.replaceAll(versionId, 'version "$version"');
// Extract files and hashes that are stored in the formula in this format:
// url "<url base>/<channel>/release/<version>/sdk/<artifact>.zip"
// sha256 "<hash>"
var filesAndHashes = RegExp(
'channels/$channel/release' +
r'/(\d[\w\d\-\.]*)/sdk/([\w\d\-\.]+)\"\n(\s+)sha256 \"[\da-f]+\"',
'channels/$channel/release'
r'/(\d[\w\d\-\.]*)/sdk/([\w\d\-\.]+)\"\n(\s+)sha256 \"[\da-f]+\"',
multiLine: true);
var contents = await file.readAsString();
contents = contents.replaceAllMapped(filesAndHashes, (m) {
var currentVersion = m.group(1);
if (currentVersion == version) {
throw new ArgumentError(
"Channel $channel is already at version $version in homebrew.");
'Channel $channel is already at version $version in homebrew.');
}
var artifact = m.group(2);
var indent = m.group(3);