Skip to content

Commit

Permalink
Merge pull request #106 from sass/homebrew
Browse files Browse the repository at this point in the history
Automate Homebrew deployment
  • Loading branch information
nex3 authored Oct 1, 2019
2 parents 1603d12 + bfffaec commit c30f734
Show file tree
Hide file tree
Showing 5 changed files with 77 additions and 1 deletion.
11 changes: 11 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,17 @@ jobs:
skip_cleanup: true
on: {tags: true}

# Deploy to Homebrew.
- name: Homebrew
if: *deploy-if
env: *github-env
script: skip
deploy:
provider: script
script: pub run grinder update-homebrew
skip_cleanup: true
on: {tags: true}

# Deploy to Chocolatey.
- name: Chocolatey
if: *deploy-if
Expand Down
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 1.0.0-beta.1

* Too many changes to list.

## 1.0.0-alpha.5

* **Breaking change**: Remove `lib/runner.dart`. This package is only meant to
Expand Down
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: sass_migrator
version: 1.0.0-dev
version: 1.0.0-beta.1
description: A tool for running migrations on Sass files
author: Jennifer Thakar <[email protected]>
homepage: https://github.com/sass/migrator
Expand Down
1 change: 1 addition & 0 deletions tool/grind.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import 'package:grinder/grinder.dart';
export 'grind/chocolatey.dart';
export 'grind/npm.dart';
export 'grind/github.dart';
export 'grind/homebrew.dart';
export 'grind/sanity_check.dart';
export 'grind/standalone.dart';

Expand Down
60 changes: 60 additions & 0 deletions tool/grind/homebrew.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
// Copyright 2019 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=migrator-$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, "migrator.rb"));
log("updating ${formula.path}");
formula.writeAsStringSync(formula.readAsStringSync().replaceFirstMapped(
_homebrewRegExp,
(match) => '\n${match[1]}url '
'"https://github.com/sass/migrator/archive/$version.tar.gz"'
'\n${match[1]}sha256 "$digest"'));

run("git",
arguments: [
"commit",
"--all",
"--message",
"Update the Sass migrator 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);
}

0 comments on commit c30f734

Please sign in to comment.