Skip to content

Commit 5a2481b

Browse files
committed
fix(ng-dev): ensure update-generate-files completes on error
Previously, if an error occurred, the spinner was never stopped, preventing the task from completing. As a result, Renovate would hang for several minutes before being forcefully terminated.
1 parent 91da94a commit 5a2481b

File tree

1 file changed

+40
-34
lines changed

1 file changed

+40
-34
lines changed

ng-dev/misc/generated-files/update-generated-files.ts

Lines changed: 40 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -14,45 +14,51 @@ import {green, Log} from '../../utils/logging.js';
1414
export async function updateGeneratedFileTargets(): Promise<void> {
1515
const spinner = new Spinner('Querying for all generated file targets');
1616

17-
// Query for all of the generated file targets
18-
const result = await ChildProcess.spawn(
19-
getBazelBin(),
20-
[
21-
'query',
22-
`"kind(nodejs_binary, //...) intersect attr(name, '.update$', //...)"`,
23-
'--output',
24-
'label',
25-
],
26-
{mode: 'silent'},
27-
);
28-
29-
if (result.status !== 0) {
30-
spinner.complete();
31-
throw Error(`Unexpected error: ${result.stderr}`);
32-
}
17+
try {
18+
// Query for all of the generated file targets
19+
const result = await ChildProcess.spawn(
20+
getBazelBin(),
21+
[
22+
'query',
23+
`"kind(nodejs_binary, //...) intersect attr(name, '.update$', //...)"`,
24+
'--output',
25+
'label',
26+
],
27+
{mode: 'silent'},
28+
);
29+
30+
if (result.status !== 0) {
31+
throw Error(`Unexpected error: ${result.stderr}`);
32+
}
3333

34-
const targets = result.stdout.trim().split(/\r?\n/);
34+
const targets = result.stdout.trim().split(/\r?\n/);
3535

36-
Log.debug.group('Discovered Targets');
37-
targets.forEach((target) => Log.debug(target));
38-
Log.debug.groupEnd();
36+
Log.debug.group('Discovered Targets');
37+
targets.forEach((target) => Log.debug(target));
38+
Log.debug.groupEnd();
3939

40-
spinner.update(`Found ${targets.length} generated file targets to update`);
40+
spinner.update(`Found ${targets.length} generated file targets to update`);
4141

42-
// Build all of the generated file targets in parallel.
43-
await ChildProcess.spawn(getBazelBin(), ['build', targets.join(' ')], {mode: 'silent'});
42+
// Build all of the generated file targets in parallel.
43+
await ChildProcess.spawn(getBazelBin(), ['build', targets.join(' ')], {mode: 'silent'});
4444

45-
// Individually run the generated file update targets.
46-
for (let idx = 0; idx < targets.length; idx++) {
47-
const target = targets[idx];
48-
spinner.update(`${idx + 1} of ${targets.length} updates completed`);
49-
const updateResult = await ChildProcess.spawn(getBazelBin(), ['run', target], {mode: 'silent'});
50-
if (updateResult.status !== 0) {
51-
spinner.complete();
52-
throw Error(`Unexpected error while updating: ${target}.`);
45+
// Individually run the generated file update targets.
46+
for (let idx = 0; idx < targets.length; idx++) {
47+
const target = targets[idx];
48+
spinner.update(`${idx + 1} of ${targets.length} updates completed`);
49+
const updateResult = await ChildProcess.spawn(getBazelBin(), ['run', target], {
50+
mode: 'silent',
51+
});
52+
if (updateResult.status !== 0) {
53+
spinner.complete();
54+
spinner.complete();
55+
throw Error(`Unexpected error while updating: ${target}.`);
56+
}
5357
}
54-
}
5558

56-
spinner.complete();
57-
Log.info(` ${green('✔')} Updated all generated files (${targets.length} targets)`);
59+
spinner.complete();
60+
Log.info(` ${green('✔')} Updated all generated files (${targets.length} targets)`);
61+
} finally {
62+
spinner.complete();
63+
}
5864
}

0 commit comments

Comments
 (0)