blob: 2352f07339562a3d57ef6839114660a8286aae2f [file] [log] [blame]
// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'dart:async';
import 'dart:convert';
import 'dart:io';
import 'package:_discoveryapis_commons/_discoveryapis_commons.dart';
import 'package:googleapis/storage/v1.dart' as storage;
import 'package:http/http.dart' as http;
import 'package:path/path.dart' as p;
import 'src/formula.dart';
part 'src/impl.dart';
const githubRepo = 'dart-lang/homebrew-dart';
const formulaByChannel = {
'beta': 'Formula/dart-beta.rb',
'dev': 'Formula/dart.rb',
'stable': 'Formula/dart.rb'
};
Iterable<String> get supportedChannels => formulaByChannel.keys;
Future<void> writeHomebrewInfo(
String channel, String version, String repository, bool dryRun) async {
var formula = File(p.join(repository, formulaByChannel[channel]));
var contents = await formula.readAsString();
var hashes = await _getHashes(channel, version);
var updated = updateFormula(channel, contents, version, hashes);
if (dryRun) {
print(updated);
} else {
await formula.writeAsString(updated, flush: true);
}
}
Future<void> runGit(List<String> args, String repository,
Map<String, String> gitEnvironment, bool dryRun) async {
if (dryRun) {
args = [args[0], '--dry-run', ...args.skip(1)];
}
print("git ${args.join(' ')}");
var result = await Process.run('git', args,
workingDirectory: repository, environment: gitEnvironment);
print(result.stdout);
print(result.stderr);
}