@@ -23,14 +23,15 @@ import 'src/warnings_collection.dart';
23
23
void main (List <String > args) async {
24
24
var parser = ArgParser ()
25
25
..addCommand ('analyze' )
26
- ..addCommand ('build' )
27
26
..addCommand ('buildbot' )
28
27
..addCommand ('clean' )
29
28
..addCommand ('compare' )
30
29
..addCommand ('help' )
31
30
..addCommand ('test' )
32
31
..addCommand ('try-publish' )
33
32
..addCommand ('validate' );
33
+ var buildCommand = parser.addCommand ('build' )
34
+ ..addFlag ('debug' , help: 'build unoptimized JavaScript' );
34
35
var docCommand = parser.addCommand ('doc' )
35
36
..addOption ('name' , help: 'package name' )
36
37
..addOption ('version' , help: 'package version' )
@@ -45,6 +46,7 @@ void main(List<String> args) async {
45
46
return ;
46
47
}
47
48
49
+ buildUsage = buildCommand.usage;
48
50
docUsage = docCommand.usage;
49
51
serveUsage = serveCommand.usage;
50
52
@@ -64,6 +66,7 @@ void main(List<String> args) async {
64
66
};
65
67
}
66
68
69
+ late String buildUsage;
67
70
late String docUsage;
68
71
late String serveUsage;
69
72
@@ -116,15 +119,24 @@ Future<void> analyzeTestPackages() async {
116
119
}
117
120
}
118
121
122
+ Future <void > _buildHelp () async {
123
+ print ('''
124
+ Usage:
125
+ dart tool/task.dart build [renderers|dartdoc-options|web]
126
+ $buildUsage
127
+ ''' );
128
+ }
129
+
119
130
Future <void > runBuild (ArgResults commandResults) async {
120
131
if (commandResults.rest.isEmpty) {
121
132
await buildAll ();
122
133
}
134
+ var debug = (commandResults['debug' ] ?? false ) as bool ;
123
135
for (var target in commandResults.rest) {
124
136
await switch (target) {
125
137
'renderers' => buildRenderers (),
126
138
'dartdoc-options' => buildDartdocOptions (),
127
- 'web' => buildWeb (),
139
+ 'web' => buildWeb (debug : debug ),
128
140
_ => throw UnimplementedError ('Unknown build target: "$target "' ),
129
141
};
130
142
}
@@ -154,13 +166,14 @@ Future<void> buildDartdocOptions() async {
154
166
''' );
155
167
}
156
168
157
- Future <void > buildWeb () async {
169
+ Future <void > buildWeb ({ bool debug = false } ) async {
158
170
await SubprocessLauncher ('build' ).runStreamedDartCommand ([
159
171
'compile' ,
160
172
'js' ,
161
173
'--output=lib/resources/docs.dart.js' ,
162
174
'web/docs.dart' ,
163
- '-O4' ,
175
+ if (debug) '--enable-asserts' ,
176
+ debug ? '-O0' : '-O4' ,
164
177
]);
165
178
_delete (File ('lib/resources/docs.dart.js.deps' ));
166
179
@@ -294,7 +307,7 @@ Future<void> runDoc(ArgResults commandResults) async {
294
307
throw ArgumentError ('"doc" command requires a single target.' );
295
308
}
296
309
var target = commandResults.rest.single;
297
- var stats = commandResults['stats' ];
310
+ var stats = commandResults['stats' ] as bool ;
298
311
await switch (target) {
299
312
'flutter' => docFlutter (withStats: stats),
300
313
'help' => _docHelp (),
@@ -616,6 +629,7 @@ Help usage:
616
629
}
617
630
var command = commandResults.rest.single;
618
631
return switch (command) {
632
+ 'build' => _buildHelp (),
619
633
'doc' => _docHelp (),
620
634
'serve' => _serveHelp (),
621
635
_ => throw UnimplementedError (
0 commit comments