OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library update_homebrew; | 5 library update_homebrew; |
6 | 6 |
7 import 'dart:io'; | 7 import 'dart:io'; |
8 import 'dart:convert'; | 8 import 'dart:convert'; |
9 import 'dart:async'; | 9 import 'dart:async'; |
10 import 'package:http/http.dart' as http; | 10 import 'package:http/http.dart' as http; |
11 import 'package:args/args.dart'; | 11 import 'package:args/args.dart'; |
12 import 'package:googleapis/storage/v1.dart' as storage; | 12 import 'package:googleapis/storage/v1.dart' as storage; |
13 import 'package:googleapis/common/common.dart' show DownloadOptions, Media; | 13 import 'package:googleapis/common/common.dart' show DownloadOptions, Media; |
14 | 14 |
15 String repository; // The path to the temporary git checkout of dart-homebrew. | 15 String repository; // The path to the temporary git checkout of dart-homebrew. |
16 Map gitEnvironment; // Pass a wrapper script for SSH to git in the environment. | 16 Map gitEnvironment; // Pass a wrapper script for SSH to git in the environment. |
17 | 17 |
18 final CHANNELS = ['dev', 'stable']; | 18 final CHANNELS = ['dev', 'stable']; |
19 | 19 |
20 final SDK_FILES = ['sdk/dartsdk-macos-x64-release.zip', | 20 final SDK_FILES = ['sdk/dartsdk-macos-x64-release.zip', |
21 'sdk/dartsdk-macos-ia32-release.zip' ]; | 21 'sdk/dartsdk-macos-ia32-release.zip' ]; |
22 final DARTIUM_FILES = ['dartium/dartium-macos-ia32-release.zip' ]; | 22 final DARTIUM_FILES = ['dartium/dartium-macos-ia32-release.zip', |
| 23 'dartium/content_shell-macos-ia32-release.zip']; |
23 final FILES = []..addAll(SDK_FILES)..addAll(DARTIUM_FILES); | 24 final FILES = []..addAll(SDK_FILES)..addAll(DARTIUM_FILES); |
24 | 25 |
25 | 26 |
26 Future<String> getHash256(String channel, int revision, String download) { | 27 Future<String> getHash256(String channel, int revision, String download) { |
27 var client = new http.Client(); | 28 var client = new http.Client(); |
28 var api = new storage.StorageApi(client); | 29 var api = new storage.StorageApi(client); |
29 return | 30 return |
30 api.objects.get('dart-archive', | 31 api.objects.get('dart-archive', |
31 'channels/$channel/release/$revision/$download.sha256sum', | 32 'channels/$channel/release/$revision/$download.sha256sum', |
32 downloadOptions: DownloadOptions.FullMedia) | 33 downloadOptions: DownloadOptions.FullMedia) |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
99 .close(); | 100 .close(); |
100 }); | 101 }); |
101 } | 102 } |
102 | 103 |
103 String DartiumFile(Map revisions, | 104 String DartiumFile(Map revisions, |
104 Map hashes, | 105 Map hashes, |
105 String devVersion, | 106 String devVersion, |
106 String stableVersion) { | 107 String stableVersion) { |
107 final urlBase = 'https://storage.googleapis.com/dart-archive/channels'; | 108 final urlBase = 'https://storage.googleapis.com/dart-archive/channels'; |
108 final dartiumFile = 'dartium/dartium-macos-ia32-release.zip'; | 109 final dartiumFile = 'dartium/dartium-macos-ia32-release.zip'; |
| 110 final contentShellFile = 'dartium/content_shell-macos-ia32-release.zip'; |
109 | 111 |
110 return ''' | 112 return ''' |
111 require 'formula' | 113 require 'formula' |
112 | 114 |
113 class Dartium < Formula | 115 class Dartium < Formula |
114 homepage "https://www.dartlang.org" | 116 homepage "https://www.dartlang.org" |
115 | 117 |
116 version '$stableVersion' | 118 version '$stableVersion' |
117 url '$urlBase/stable/release/${revisions['stable']}/$dartiumFile' | 119 url '$urlBase/stable/release/${revisions['stable']}/$dartiumFile' |
118 sha256 '${hashes['stable'][dartiumFile]}' | 120 sha256 '${hashes['stable'][dartiumFile]}' |
119 | 121 |
120 devel do | 122 devel do |
121 version '$devVersion' | 123 version '$devVersion' |
122 url '$urlBase/dev/release/${revisions['dev']}/$dartiumFile' | 124 url '$urlBase/dev/release/${revisions['dev']}/$dartiumFile' |
123 sha256 '${hashes['dev'][dartiumFile]}' | 125 sha256 '${hashes['dev'][dartiumFile]}' |
| 126 |
| 127 resource 'content_shell' do |
| 128 url '$urlBase/dev/release/${revisions['dev']}/$contentShellFile' |
| 129 version '$devVersion' |
| 130 sha256 '${hashes['dev'][contentShellFile]}' |
| 131 end |
| 132 end |
| 133 |
| 134 resource 'content_shell' do |
| 135 url '$urlBase/stable/release/${revisions['stable']}/$contentShellFile' |
| 136 version '$stableVersion' |
| 137 sha256 '${hashes['stable'][contentShellFile]}' |
124 end | 138 end |
125 | 139 |
126 def shim_script target | 140 def shim_script target |
127 <<-EOS.undent | 141 <<-EOS.undent |
128 #!/bin/bash | 142 #!/bin/bash |
129 open "#{prefix}/#{target}" "\$@" | 143 "#{prefix}/#{target}" "\$@" |
130 EOS | 144 EOS |
131 end | 145 end |
132 | 146 |
133 def install | 147 def install |
| 148 dartium_binary = 'Chromium.app/Contents/MacOS/Chromium' |
134 prefix.install Dir['*'] | 149 prefix.install Dir['*'] |
135 (bin+"dartium").write shim_script "Chromium.app" | 150 (bin+"dartium").write shim_script dartium_binary |
| 151 |
| 152 content_shell_binary = 'Content Shell.app/Contents/MacOS/Content Shell' |
| 153 prefix.install resource('content_shell') |
| 154 (bin+"content_shell").write shim_script content_shell_binary |
136 end | 155 end |
137 | 156 |
138 def caveats; <<-EOS.undent | 157 def caveats; <<-EOS.undent |
139 To use with IntelliJ, set the Dartium execute home to: | 158 To use with IntelliJ, set the Dartium execute home to: |
140 #{prefix}/Chromium.app | 159 #{prefix}/Chromium.app |
141 EOS | 160 EOS |
142 end | 161 end |
143 | 162 |
144 test do | 163 test do |
145 system "#{bin}/dartium" | 164 system "#{bin}/dartium" |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
239 repository = tempDir.path; | 258 repository = tempDir.path; |
240 }) | 259 }) |
241 .then((_) => runGit( | 260 .then((_) => runGit( |
242 ['clone', 'git@github.com:dart-lang/homebrew-dart.git', '.'])) | 261 ['clone', 'git@github.com:dart-lang/homebrew-dart.git', '.'])) |
243 .then((_) => writeHomebrewInfo(channel, revision)) | 262 .then((_) => writeHomebrewInfo(channel, revision)) |
244 .then((_) => runGit(['commit', '-a', '-m', | 263 .then((_) => runGit(['commit', '-a', '-m', |
245 'Updated $channel branch to revision $revision'])) | 264 'Updated $channel branch to revision $revision'])) |
246 .then((_) => runGit(['push'])) | 265 .then((_) => runGit(['push'])) |
247 .whenComplete(() => new Directory(repository).delete(recursive: true)); | 266 .whenComplete(() => new Directory(repository).delete(recursive: true)); |
248 } | 267 } |
OLD | NEW |