renovate
Version:
Automated dependency updates. Flexible so you don't need to be.
83 lines • 3.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getOnboardingConfig = getOnboardingConfig;
exports.getOnboardingConfigContents = getOnboardingConfigContents;
const global_1 = require("../../../../config/global");
const local_1 = require("../../../../config/presets/local");
const util_1 = require("../../../../config/presets/util");
const logger_1 = require("../../../../logger");
const clone_1 = require("../../../../util/clone");
const json_writer_1 = require("../../../../util/json-writer");
async function getOnboardingConfig(config) {
let onboardingConfig = (0, clone_1.clone)(config.onboardingConfig);
// TODO #22198 fix types
const foundPreset = await searchDefaultOnboardingPreset(config.repository);
if (foundPreset) {
logger_1.logger.debug(`Found preset ${foundPreset} - using it in onboarding config`);
onboardingConfig = {
$schema: 'https://docs.renovatebot.com/renovate-schema.json',
extends: [foundPreset],
};
}
else {
// Organization preset did not exist
logger_1.logger.debug('No default org/owner preset found, so the default onboarding config will be used instead.');
}
logger_1.logger.debug({ config: onboardingConfig }, 'onboarding config');
return onboardingConfig;
}
async function searchDefaultOnboardingPreset(repository) {
let foundPreset;
logger_1.logger.debug('Checking for a default Renovate preset which can be used.');
const repoPathParts = repository.split('/');
for (let index = repoPathParts.length - 1; index >= 1 && !foundPreset; index--) {
const groupName = repoPathParts.slice(0, index).join('/');
// Check for group/renovate-config
try {
const repo = `${groupName}/renovate-config`;
const preset = `local>${repo}`;
logger_1.logger.debug(`Checking for preset: ${preset}`);
if (await (0, local_1.getPreset)({ repo })) {
foundPreset = preset;
}
}
catch (err) {
if (err.message !== util_1.PRESET_DEP_NOT_FOUND &&
!err.message.startsWith('Unsupported platform')) {
logger_1.logger.warn({ err }, 'Unknown error fetching default owner preset');
}
}
}
if (!foundPreset) {
// Check for org/.{{platform}}
const orgName = repoPathParts[0];
// TODO: types (#22198)
const platform = global_1.GlobalConfig.get('platform');
try {
const repo = `${orgName}/.${platform}`;
const presetName = 'renovate-config';
const orgPresetName = `local>${repo}:${presetName}`;
logger_1.logger.debug(`Checking for preset: ${orgPresetName}`);
if (await (0, local_1.getPreset)({
repo,
presetName,
})) {
foundPreset = orgPresetName;
}
}
catch (err) {
if (err.message !== util_1.PRESET_DEP_NOT_FOUND &&
!err.message.startsWith('Unsupported platform')) {
logger_1.logger.warn({ err }, 'Unknown error fetching default owner preset');
}
}
}
return foundPreset;
}
async function getOnboardingConfigContents(config, fileName) {
const codeFormat = await json_writer_1.EditorConfig.getCodeFormat(fileName);
const jsonWriter = new json_writer_1.JSONWriter(codeFormat);
const onboardingConfig = await getOnboardingConfig(config);
return jsonWriter.write(onboardingConfig);
}
//# sourceMappingURL=config.js.map