mirror of
https://github.com/danog/dart-sass.git
synced 2024-11-27 04:34:59 +01:00
61 lines
1.9 KiB
Dart
61 lines
1.9 KiB
Dart
// Copyright 2018 Google Inc. Use of this source code is governed by an
|
|
// MIT-style license that can be found in the LICENSE file or at
|
|
// https://opensource.org/licenses/MIT.
|
|
|
|
import 'dart:io';
|
|
import 'dart:convert';
|
|
|
|
import 'package:crypto/crypto.dart';
|
|
import 'package:grinder/grinder.dart';
|
|
import 'package:path/path.dart' as p;
|
|
|
|
import 'utils.dart';
|
|
|
|
/// A regular expression for locating the URL and SHA256 hash of the Sass
|
|
/// archive in the `homebrew-sass` formula.
|
|
final _homebrewRegExp = RegExp(r'\n( *)url "[^"]+"'
|
|
r'\n *sha256 "[^"]+"');
|
|
|
|
@Task('Update the Homebrew formula for the current version.')
|
|
updateHomebrew() async {
|
|
ensureBuild();
|
|
|
|
var process = await Process.start("git",
|
|
["archive", "--prefix=dart-sass-$version/", "--format=tar.gz", version]);
|
|
var digest = await sha256.bind(process.stdout).first;
|
|
var stderr = await utf8.decodeStream(process.stderr);
|
|
if ((await process.exitCode) != 0) {
|
|
fail('git archive "$version" failed:\n$stderr');
|
|
}
|
|
|
|
var repo = await cloneOrPull("https://github.com/sass/homebrew-sass.git");
|
|
|
|
var formula = File(p.join(repo, "sass.rb"));
|
|
log("updating ${formula.path}");
|
|
formula.writeAsStringSync(formula.readAsStringSync().replaceFirstMapped(
|
|
_homebrewRegExp,
|
|
(match) => '\n${match[1]}url '
|
|
'"https://github.com/sass/dart-sass/archive/$version.tar.gz"'
|
|
'\n${match[1]}sha256 "$digest"'));
|
|
|
|
run("git",
|
|
arguments: [
|
|
"commit",
|
|
"--all",
|
|
"--message",
|
|
"Update Dart Sass to $version"
|
|
],
|
|
workingDirectory: repo,
|
|
runOptions: sassBotEnvironment);
|
|
|
|
var username = environment('GITHUB_USER');
|
|
var password = environment('GITHUB_AUTH');
|
|
await runAsync("git",
|
|
arguments: [
|
|
"push",
|
|
"https://$username:$password@github.com/sass/homebrew-sass.git",
|
|
"HEAD:master"
|
|
],
|
|
workingDirectory: repo);
|
|
}
|