renovate
Version:
Automated dependency updates. Flexible so you don't need to be.
59 lines • 3.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateReconfigureBranch = validateReconfigureBranch;
const tslib_1 = require("tslib");
const is_1 = tslib_1.__importDefault(require("@sindresorhus/is"));
const massage_1 = require("../../../config/massage");
const validation_1 = require("../../../config/validation");
const logger_1 = require("../../../logger");
const platform_1 = require("../../../modules/platform");
const comment_1 = require("../../../modules/platform/comment");
const git_1 = require("../../../util/git");
const regex_1 = require("../../../util/regex");
const reconfigure_cache_1 = require("./reconfigure-cache");
const utils_1 = require("./utils");
async function validateReconfigureBranch(config, reconfigureConfig, configFileName, reconfigurePr) {
logger_1.logger.debug('validateReconfigureBranch()');
const context = config.statusCheckNames?.configValidation;
const branchName = (0, utils_1.getReconfigureBranchName)(config.branchPrefix);
const branchSha = (0, git_1.getBranchCommit)(branchName);
if (context) {
const validationStatus = await platform_1.platform.getBranchStatusCheck(branchName, context);
// if old status check is present skip validation
if (is_1.default.nonEmptyString(validationStatus)) {
logger_1.logger.debug('Skipping validation check because status check already exists.');
return validationStatus === 'green';
}
}
else {
logger_1.logger.debug('Status check is null or an empty string, skipping status check addition.');
}
// perform validation and provide a passing or failing check based on result
const massagedConfig = (0, massage_1.massageConfig)(reconfigureConfig);
const validationResult = await (0, validation_1.validateConfig)('repo', massagedConfig);
// failing check
if (validationResult.errors.length > 0) {
logger_1.logger.debug({ errors: validationResult.errors.map((err) => err.message).join(', ') }, 'Validation Errors');
// add comment to reconfigure PR if it exists
if (reconfigurePr) {
let body = `There is an error with this repository's Renovate configuration that needs to be fixed.\n\n`;
body += `Location: \`${configFileName}\`\n`;
body += `Message: \`${validationResult.errors
.map((e) => e.message)
.join(', ')
.replace((0, regex_1.regEx)(/`/g), "'")}\`\n`;
await (0, comment_1.ensureComment)({
number: reconfigurePr.number,
topic: 'Action Required: Fix Renovate Configuration',
content: body,
});
}
await (0, utils_1.setBranchStatus)(branchName, 'Validation Failed', 'red', context);
(0, reconfigure_cache_1.setReconfigureBranchCache)(branchSha, false);
return false;
}
// passing check
await (0, utils_1.setBranchStatus)(branchName, 'Validation Successful', 'green', context);
return true;
}
//# sourceMappingURL=validate.js.map