renovate/lib/workers/repository/error-config.ts

43 lines
1.8 KiB
TypeScript
Raw Normal View History

import { logger } from '../../logger';
import { platform } from '../../platform';
import { RenovateConfig } from '../../config';
import { PR_STATE_OPEN } from '../../constants/pull-requests';
2019-01-06 13:47:42 +00:00
export async function raiseConfigWarningIssue(
config: RenovateConfig,
error: Error
): Promise<void> {
logger.debug('raiseConfigWarningIssue()');
2019-12-05 10:55:14 +00:00
let body = `There is an error with this repository's Renovate configuration that needs to be fixed. As a precaution, Renovate will stop PRs until it is resolved.\n\n`;
if (error.configFile) {
body += `File: \`${error.configFile}\`\n`;
}
body += `Error type: ${error.validationError}\n`;
if (error.validationMessage) {
body += `Message: \`${error.validationMessage}\`\n`;
}
const pr = await platform.getBranchPr(config.onboardingBranch);
if (pr && pr.state && pr.state === PR_STATE_OPEN) {
logger.debug('Updating onboarding PR with config error notice');
2019-12-05 10:55:14 +00:00
body = `## Action Required: Fix Renovate Configuration\n\n${body}`;
body += `\n\nOnce you have resolved this problem (in this onboarding branch), Renovate will return to providing you with a preview of your repository's configuration.`;
if (config.dryRun) {
logger.info('DRY-RUN: Would update PR #' + pr.number);
} else await platform.updatePr(pr.number, config.onboardingPrTitle, body);
} else if (config.dryRun) {
logger.info('DRY-RUN: Would ensure config error issue');
} else {
2019-08-15 05:41:01 +00:00
const once = false;
const shouldReopen = config.configWarningReuseIssue;
const res = await platform.ensureIssue({
title: `Action Required: Fix Renovate Configuration`,
2019-08-15 05:41:01 +00:00
body,
once,
shouldReOpen: shouldReopen,
});
if (res === 'created') {
logger.warn({ configError: error, res }, 'Config Warning');
}
}
}