Skip to content

Commit 7f2cfc4

Browse files
authored
[infra] Add a --fix flag to the ci tool (#3090)
The generate task needs to go before the others in case it generates bad code.
1 parent ec7142f commit 7f2cfc4

File tree

1 file changed

+21
-4
lines changed

1 file changed

+21
-4
lines changed

tool/ci.dart

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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.
416433
final tasks = [
417434
pubTask,
435+
generateTask,
418436
analyzeTask,
419437
formatTask,
420-
generateTask,
421438
testTask,
422439
exampleTask,
423440
coverageTask,

0 commit comments

Comments
 (0)