UNPKG

renovate

Version:

Automated dependency updates. Flexible so you don't need to be.

68 lines 3.05 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.migrateAndValidateConfig = migrateAndValidateConfig; exports.getParsedContent = getParsedContent; const tslib_1 = require("tslib"); const url_1 = require("url"); const is_1 = tslib_1.__importDefault(require("@sindresorhus/is")); const dequal_1 = require("dequal"); const upath_1 = tslib_1.__importDefault(require("upath")); const massage_1 = require("../../../../config/massage"); const migration_1 = require("../../../../config/migration"); const validation_1 = require("../../../../config/validation"); const logger_1 = require("../../../../logger"); const common_1 = require("../../../../util/common"); const fs_1 = require("../../../../util/fs"); const yaml_1 = require("../../../../util/yaml"); async function migrateAndValidateConfig(config, configType) { const { isMigrated, migratedConfig } = (0, migration_1.migrateConfig)(config); if (isMigrated) { logger_1.logger.warn({ configType, originalConfig: config, migratedConfig }, 'Config needs migrating'); } const massagedConfig = (0, massage_1.massageConfig)(migratedConfig); // log only if it's changed if (!(0, dequal_1.dequal)(migratedConfig, massagedConfig)) { logger_1.logger.trace({ config: massagedConfig }, 'Post-massage config'); } const { warnings, errors } = await (0, validation_1.validateConfig)('global', massagedConfig); if (warnings.length) { logger_1.logger.warn({ configType, warnings }, 'Config validation warnings found'); } if (errors.length) { logger_1.logger.warn({ configType, errors }, 'Config validation errors found'); } return massagedConfig; } async function getParsedContent(file) { if (upath_1.default.basename(file) === '.renovaterc') { return (0, common_1.parseJson)(await (0, fs_1.readSystemFile)(file, 'utf8'), file); } switch (upath_1.default.extname(file)) { case '.yaml': case '.yml': return (0, yaml_1.parseSingleYaml)(await (0, fs_1.readSystemFile)(file, 'utf8')); case '.json5': case '.json': return (0, common_1.parseJson)(await (0, fs_1.readSystemFile)(file, 'utf8'), file); case '.cjs': case '.mjs': case '.js': { const absoluteFilePath = upath_1.default.isAbsolute(file) ? file : `${process.cwd()}/${file}`; // use file url paths to avoid issues with windows paths // typescript does not support file URL for import const tmpConfig = await import((0, url_1.pathToFileURL)(absoluteFilePath).href); /* v8 ignore next -- not testable */ let config = tmpConfig.default ?? tmpConfig; // Allow the config to be a function if (is_1.default.function(config)) { config = config(); } return config; } default: throw new Error('Unsupported file type'); } } //# sourceMappingURL=util.js.map