Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(814)

Side by Side Diff: third_party/pkg/angular/bin/pub_build.dart

Issue 257423008: Update all Angular libs (run update_all.sh). (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1
2 import 'dart:io';
3 import 'dart:convert';
4 import 'package:args/args.dart';
5 import 'package:path/path.dart' as path;
6
7 /// Utility to run 'pub build' and fail if any unexpected warnings occur.
8 main(args) {
9 var cmds = Commands.parse(args);
10
11 var initialDir = Directory.current;
12 Directory.current = cmds.packageHome;
13
14 var result = Process.runSync('pub', ['build', '--format=json']);
15 if (result.exitCode != 0) {
16 print('pub build failed:');
17 print(result.stdout);
18 print(result.stderr);
19 exit(result.exitCode);
20 }
21
22 Directory.current = initialDir;
23
24 var actual = JSON.decode(result.stdout);
25 var entries = actual['log']
26 .where((entry) => entry['level'] != 'Fine' && entry['level'] != 'Info')
27 .map((entry) =>
28 '${entry['assetId']['path']} from ${entry['transformer']['name']} :'
29 '${entry['level']}: ${entry['message']}')
30 .toList();
31
32 entries.sort();
33
34 if (cmds.reset) {
35 var lines = entries.map((msg) => ' ${JSON.encode(msg)}');
36 cmds.expectations.writeAsStringSync('[\n${lines.join(',\n')}\n]');
37 return;
38 }
39
40 var expected = JSON.decode(cmds.expectations.readAsStringSync());
41 var unexpected = entries.toSet()
42 ..removeAll(expected);
43
44 if (unexpected.isNotEmpty) {
45 print('Encountered unexpected pub build messages:');
46 print(unexpected.join('\n'));
47 print(' ');
48 print('This can be corrected by running:');
49 print(' dart ${path.relative(Platform.script.path)} ${args.join(' ')} '
50 '--reset');
51 exit(-1);
52 }
53 }
54
55 class Commands {
56 Directory packageHome;
57 File expectations;
58 bool reset;
59
60 static Commands parse(List<String> args) {
61 var parser = new ArgParser()
62 ..addOption('package_home', abbr: 'p',
63 help: 'The root directory of the package to be built.',
64 defaultsTo: '.')
65 ..addOption('expectations', abbr: 'e',
66 help: 'A JSON file containing the expected warning and error messages.')
67 ..addFlag('reset', negatable: false,
68 help: 'Regenerate the expectations with the results of the build.')
69 ..addFlag('help', abbr: 'h',
70 negatable: false, help: 'Displays this help and exit.');
71
72 showUsage() {
73 print('Usage: dart pub_build.dart [options]');
74 print('\nThese are valid options expected by pub_build.dart:');
75 print(parser.getUsage());
76 }
77
78 var cmds = new Commands();
79 var res;
80 try {
81 res = parser.parse(args);
82 } on FormatException catch (e) {
83 print(e.message);
84 showUsage();
85 exit(1);
86 }
87
88 if (res['help']) {
89 showUsage();
90 exit(0);
91 }
92
93 cmds.packageHome = new Directory(res['package_home']);
94 if (!cmds.packageHome.existsSync()) {
95 print('Unable to find directory ${res['package_home']}');
96 exit(-1);
97 }
98
99 cmds.expectations = new File(path.absolute(res['expectations']));
100 if (!cmds.expectations.existsSync()) {
101 print('Unable to open expectations file ${res['expectations']}');
102 exit(-1);
103 }
104
105 cmds.reset = res['reset'];
106
107 return cmds;
108 }
109 }
OLDNEW
« no previous file with comments | « third_party/pkg/angular/bin/parser_generator_for_spec.dart ('k') | third_party/pkg/angular/demo/bouncing_balls/pubspec.yaml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698