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:async'; | 7 import 'dart:async'; |
8 import 'dart:convert'; | 8 import 'dart:convert'; |
9 import 'dart:io'; | 9 import 'dart:io'; |
10 | 10 |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
126 url '$urlBase/stable/release/${revisions['stable']}/$dartiumFile' | 126 url '$urlBase/stable/release/${revisions['stable']}/$dartiumFile' |
127 sha256 '${hashes['stable'][dartiumFile]}' | 127 sha256 '${hashes['stable'][dartiumFile]}' |
128 | 128 |
129 devel do | 129 devel do |
130 version '$devVersion' | 130 version '$devVersion' |
131 url '$urlBase/dev/release/${revisions['dev']}/$dartiumFile' | 131 url '$urlBase/dev/release/${revisions['dev']}/$dartiumFile' |
132 sha256 '${hashes['dev'][dartiumFile]}' | 132 sha256 '${hashes['dev'][dartiumFile]}' |
133 | 133 |
134 resource 'content_shell' do | 134 resource 'content_shell' do |
135 url '$urlBase/dev/release/${revisions['dev']}/$contentShellFile' | 135 url '$urlBase/dev/release/${revisions['dev']}/$contentShellFile' |
136 version '$devVersion' | |
137 sha256 '${hashes['dev'][contentShellFile]}' | 136 sha256 '${hashes['dev'][contentShellFile]}' |
138 end | 137 end |
139 end | 138 end |
140 | 139 |
141 resource 'content_shell' do | 140 resource 'content_shell' do |
142 url '$urlBase/stable/release/${revisions['stable']}/$contentShellFile' | 141 url '$urlBase/stable/release/${revisions['stable']}/$contentShellFile' |
143 version '$stableVersion' | |
144 sha256 '${hashes['stable'][contentShellFile]}' | 142 sha256 '${hashes['stable'][contentShellFile]}' |
145 end | 143 end |
146 | 144 |
147 def shim_script target | 145 def shim_script target |
148 <<-EOS.undent | 146 <<-EOS.undent |
149 #!/bin/bash | 147 #!/bin/bash |
150 exec "#{prefix}/#{target}" "\$@" | 148 exec "#{prefix}/#{target}" "\$@" |
151 EOS | 149 EOS |
152 end | 150 end |
153 | 151 |
154 def install | 152 def install |
155 dartium_binary = 'Chromium.app/Contents/MacOS/Chromium' | 153 dartium_binary = 'Chromium.app/Contents/MacOS/Chromium' |
156 prefix.install Dir['*'] | 154 prefix.install Dir['*'] |
157 (bin+"dartium").write shim_script dartium_binary | 155 (bin+"dartium").write shim_script dartium_binary |
158 | 156 |
159 content_shell_binary = 'Content Shell.app/Contents/MacOS/Content Shell' | 157 content_shell_binary = 'Content Shell.app/Contents/MacOS/Content Shell' |
160 prefix.install resource('content_shell') | 158 prefix.install resource('content_shell') |
161 (bin+"content_shell").write shim_script content_shell_binary | 159 (bin+"content_shell").write shim_script content_shell_binary |
162 end | 160 end |
163 | 161 |
164 def caveats; <<-EOS.undent | 162 def caveats; <<-EOS.undent |
165 To use with IntelliJ, set the Dartium execute home to: | 163 DEPRECATED |
| 164 In the future, use the `dart` formula using |
| 165 `--with-dartium` and/or `--with-content-shell` |
| 166 |
| 167 To use with IntelliJ, set the Dartium execute home to: |
166 #{prefix}/Chromium.app | 168 #{prefix}/Chromium.app |
167 EOS | 169 EOS |
168 end | 170 end |
169 | 171 |
170 test do | 172 test do |
171 system "#{bin}/dartium" | 173 system "#{bin}/dartium" |
172 end | 174 end |
173 end | 175 end |
174 '''; | 176 '''; |
175 | 177 |
176 String createDartFormula( | 178 String createDartFormula( |
177 Map revisions, Map hashes, String devVersion, String stableVersion) => ''' | 179 Map revisions, Map hashes, String devVersion, String stableVersion) => ''' |
178 require 'formula' | 180 require 'formula' |
179 | 181 |
180 class Dart < Formula | 182 class Dart < Formula |
181 homepage 'https://www.dartlang.org/' | 183 homepage 'https://www.dartlang.org/' |
182 | 184 |
183 version '$stableVersion' | 185 version '$stableVersion' |
184 if MacOS.prefer_64_bit? | 186 if MacOS.prefer_64_bit? |
185 url '$urlBase/stable/release/${revisions['stable']}/$x64File' | 187 url '$urlBase/stable/release/${revisions['stable']}/$x64File' |
186 sha256 '${hashes['stable'][x64File]}' | 188 sha256 '${hashes['stable'][x64File]}' |
187 else | 189 else |
188 url '$urlBase/stable/release/${revisions['stable']}/$ia32File' | 190 url '$urlBase/stable/release/${revisions['stable']}/$ia32File' |
189 sha256 '${hashes['stable'][ia32File]}' | 191 sha256 '${hashes['stable'][ia32File]}' |
190 end | 192 end |
191 | 193 |
| 194 option 'with-content-shell', 'Download and install content_shell -- headless D
artium for testing' |
| 195 option 'with-dartium', 'Download and install Dartium -- Chromium with Dart' |
| 196 |
192 devel do | 197 devel do |
193 version '$devVersion' | 198 version '$devVersion' |
194 if MacOS.prefer_64_bit? | 199 if MacOS.prefer_64_bit? |
195 url '$urlBase/dev/release/${revisions['dev']}/$x64File' | 200 url '$urlBase/dev/release/${revisions['dev']}/$x64File' |
196 sha256 '${hashes['dev'][x64File]}' | 201 sha256 '${hashes['dev'][x64File]}' |
197 else | 202 else |
198 url '$urlBase/dev/release/${revisions['dev']}/$ia32File' | 203 url '$urlBase/dev/release/${revisions['dev']}/$ia32File' |
199 sha256 '${hashes['dev'][ia32File]}' | 204 sha256 '${hashes['dev'][ia32File]}' |
200 end | 205 end |
| 206 |
| 207 resource 'content_shell' do |
| 208 url '$urlBase/dev/release/${revisions['dev']}/$contentShellFile' |
| 209 sha256 '${hashes['dev'][contentShellFile]}' |
| 210 end |
| 211 |
| 212 resource 'dartium' do |
| 213 url '$urlBase/dev/release/${revisions['dev']}/$dartiumFile' |
| 214 sha256 '${hashes['dev'][dartiumFile]}' |
| 215 end |
| 216 end |
| 217 |
| 218 resource 'content_shell' do |
| 219 url '$urlBase/stable/release/${revisions['stable']}/$contentShellFile' |
| 220 sha256 '${hashes['stable'][contentShellFile]}' |
| 221 end |
| 222 |
| 223 resource 'dartium' do |
| 224 url '$urlBase/stable/release/${revisions['stable']}/$dartiumFile' |
| 225 sha256 '${hashes['stable'][dartiumFile]}' |
201 end | 226 end |
202 | 227 |
203 def install | 228 def install |
204 libexec.install Dir['*'] | 229 libexec.install Dir['*'] |
205 bin.install_symlink "#{libexec}/bin/dart" | 230 bin.install_symlink "#{libexec}/bin/dart" |
206 bin.write_exec_script Dir["#{libexec}/bin/{pub,docgen,dart?*}"] | 231 bin.write_exec_script Dir["#{libexec}/bin/{pub,docgen,dart?*}"] |
| 232 |
| 233 if build.with? 'content-shell' |
| 234 dartium_binary = 'Chromium.app/Contents/MacOS/Chromium' |
| 235 prefix.install resource('dartium') |
| 236 (bin+"dartium").write shim_script dartium_binary |
| 237 end |
| 238 |
| 239 if build.with? 'content-shell' |
| 240 content_shell_binary = 'Content Shell.app/Contents/MacOS/Content Shell' |
| 241 prefix.install resource('content_shell') |
| 242 (bin+"content_shell").write shim_script content_shell_binary |
| 243 end |
| 244 end |
| 245 |
| 246 def shim_script target |
| 247 <<-EOS.undent |
| 248 #!/bin/bash |
| 249 exec "#{prefix}/#{target}" "\$@" |
| 250 EOS |
207 end | 251 end |
208 | 252 |
209 def caveats; <<-EOS.undent | 253 def caveats; <<-EOS.undent |
210 Please note the path to the Dart SDK: | 254 Please note the path to the Dart SDK: |
211 #{opt_libexec} | 255 #{opt_libexec} |
| 256 |
| 257 --with-dartium: |
| 258 To use with IntelliJ, set the Dartium execute home to: |
| 259 #{prefix}/Chromium.app |
212 EOS | 260 EOS |
213 end | 261 end |
214 | 262 |
215 test do | 263 test do |
216 (testpath/'sample.dart').write <<-EOS.undent | 264 (testpath/'sample.dart').write <<-EOS.undent |
217 void main() { | 265 void main() { |
218 print(r"test message"); | 266 print(r"test message"); |
219 } | 267 } |
220 EOS | 268 EOS |
221 | 269 |
(...skipping 13 matching lines...) Expand all Loading... |
235 } | 283 } |
236 | 284 |
237 main(args) async { | 285 main(args) async { |
238 final parser = new ArgParser() | 286 final parser = new ArgParser() |
239 ..addOption('revision', abbr: 'r') | 287 ..addOption('revision', abbr: 'r') |
240 ..addOption('channel', abbr: 'c', allowed: ['dev', 'stable']) | 288 ..addOption('channel', abbr: 'c', allowed: ['dev', 'stable']) |
241 ..addOption('key', abbr: 'k'); | 289 ..addOption('key', abbr: 'k'); |
242 final options = parser.parse(args); | 290 final options = parser.parse(args); |
243 final revision = options['revision']; | 291 final revision = options['revision']; |
244 final channel = options['channel']; | 292 final channel = options['channel']; |
245 final key = options['key']; | 293 if ([revision, channel].contains(null)) { |
246 if ([revision, channel, key].contains(null)) { | 294 print("Usage: update_homebrew.dart -r revision -c channel [-k ssh_key]\n" |
247 print("Usage: update_homebrew.dart -r revision -c channel -k ssh_key\n" | |
248 " ssh_key should allow pushes to ${GITHUB_REPO} on github"); | 295 " ssh_key should allow pushes to ${GITHUB_REPO} on github"); |
249 return; | 296 return; |
250 } | 297 } |
251 final sshWrapper = Platform.script.resolve('ssh_with_key').toFilePath(); | 298 |
252 gitEnvironment = {'GIT_SSH': sshWrapper, 'SSH_KEY_PATH': key}; | 299 final key = options['key']; |
| 300 if (key != null) { |
| 301 final sshWrapper = Platform.script.resolve('ssh_with_key').toFilePath(); |
| 302 gitEnvironment = {'GIT_SSH': sshWrapper, 'SSH_KEY_PATH': key}; |
| 303 } |
253 | 304 |
254 Chain.capture(() async { | 305 Chain.capture(() async { |
255 var tempDir = await Directory.systemTemp.createTemp('update_homebrew'); | 306 var tempDir = await Directory.systemTemp.createTemp('update_homebrew'); |
256 | 307 |
257 try { | 308 try { |
258 repository = tempDir.path; | 309 repository = tempDir.path; |
259 | 310 |
260 await runGit(['clone', 'git@github.com:${GITHUB_REPO}.git', '.']); | 311 await runGit(['clone', 'git@github.com:${GITHUB_REPO}.git', '.']); |
261 await writeHomebrewInfo(channel, revision); | 312 await writeHomebrewInfo(channel, revision); |
262 await runGit([ | 313 await runGit([ |
263 'commit', | 314 'commit', |
264 '-a', | 315 '-a', |
265 '-m', | 316 '-m', |
266 'Updated $channel branch to revision $revision' | 317 'Updated $channel branch to revision $revision' |
267 ]); | 318 ]); |
268 | 319 |
269 await runGit(['push']); | 320 await runGit(['push']); |
270 } finally { | 321 } finally { |
271 await tempDir.delete(recursive: true); | 322 await tempDir.delete(recursive: true); |
272 } | 323 } |
273 }, onError: (error, chain) { | 324 }, onError: (error, chain) { |
274 print(error); | 325 print(error); |
275 print(chain.terse); | 326 print(chain.terse); |
276 }); | 327 }); |
277 } | 328 } |
OLD | NEW |