@@ -56,6 +56,13 @@ ArgParser makeArgParser() {
5656 'fast' ,
5757 negatable: false ,
5858 help: 'Skip slow integration tests and apitool.' ,
59+ )
60+ ..addFlag (
61+ 'fix' ,
62+ negatable: false ,
63+ help:
64+ 'Apply auto-fixes (e.g., dart fix, dart format) instead of just '
65+ 'checking.' ,
5966 );
6067 for (final task in tasks) {
6168 parser.addFlag (task.name, help: task.helpMessage);
@@ -151,6 +158,12 @@ class AnalyzeTask extends Task {
151158 required List <String > packages,
152159 required ArgResults argResults,
153160 }) async {
161+ if (argResults['fix' ] as bool ) {
162+ await _runMaybeParallel ([
163+ for (final path in [...packages, 'tool' ])
164+ () => _runProcess ('dart' , ['fix' , '--apply' , path]),
165+ ], argResults);
166+ }
154167 await _runProcess ('dart' , [
155168 'analyze' ,
156169 '--fatal-infos' ,
@@ -170,10 +183,10 @@ class FormatTask extends Task {
170183 required List <String > packages,
171184 required ArgResults argResults,
172185 }) async {
186+ final fix = argResults['fix' ] as bool ;
173187 await _runProcess ('dart' , [
174188 'format' ,
175- '--output=none' ,
176- '--set-exit-if-changed' ,
189+ if (! fix) ...['--output=none' , '--set-exit-if-changed' ],
177190 ...packages,
178191 'tool' ,
179192 ]);
@@ -201,9 +214,13 @@ class GenerateTask extends Task {
201214 'pkgs/pub_formats/tool/generate.dart' ,
202215 'pkgs/record_use/tool/generate_syntax.dart' ,
203216 ];
217+ final fix = argResults['fix' ] as bool ;
204218 await _runMaybeParallel ([
205219 for (final generator in generators)
206- () => _runProcess ('dart' , [generator, '--set-exit-if-changed' ]),
220+ () => _runProcess ('dart' , [
221+ generator,
222+ if (! fix) '--set-exit-if-changed' ,
223+ ]),
207224 ], argResults);
208225 }
209226}
@@ -415,9 +432,9 @@ const apiToolTask = ApiToolTask();
415432// The order of tasks is intentional.
416433final tasks = [
417434 pubTask,
435+ generateTask,
418436 analyzeTask,
419437 formatTask,
420- generateTask,
421438 testTask,
422439 exampleTask,
423440 coverageTask,
0 commit comments