Select Git revision
index.spec.ts
-
Joshua Gleitze authoredJoshua Gleitze authored
migration.ts 24.71 KiB
import later from '@breejs/later';
import is from '@sindresorhus/is';
import { dequal } from 'dequal';
import { logger } from '../logger';
import { clone } from '../util/clone';
import { regEx } from '../util/regex';
import { getGlobalConfig } from './global';
import { applyMigrations } from './migrations';
import { getOptions } from './options';
import { removedPresets } from './presets/common';
import type {
MigratedConfig,
MigratedRenovateConfig,
RenovateConfig,
RenovateOptions,
} from './types';
import { mergeChildConfig } from './utils';
const options = getOptions();
let optionTypes: Record<string, RenovateOptions['type']>;
const removedOptions = [
'maintainYarnLock',
'yarnCacheFolder',
'yarnMaintenanceBranchName',
'yarnMaintenanceCommitMessage',
'yarnMaintenancePrTitle',
'yarnMaintenancePrBody',
'groupBranchName',
'groupBranchName',
'groupCommitMessage',
'groupPrTitle',
'groupPrBody',
'statusCheckVerify',
'lazyGrouping',
'supportPolicy',
];
// Returns a migrated config
export function migrateConfig(
config: RenovateConfig,
// TODO: remove any type (#9611)
parentKey?: string | any
): MigratedConfig {
try {
if (!optionTypes) {
optionTypes = {};
options.forEach((option) => {
optionTypes[option.name] = option.type;
});
}
const migratedConfig = clone(config) as MigratedRenovateConfig;
const depTypes = [
'dependencies',
'devDependencies',
'engines',
'optionalDependencies',
'peerDependencies',
];
const { migratePresets } = getGlobalConfig();
applyMigrations(config, migratedConfig);
for (const [key, val] of Object.entries(config)) {
if (removedOptions.includes(key)) {
delete migratedConfig[key];
} else if (key === 'pathRules') {
if (is.array(val)) {
migratedConfig.packageRules = is.array(migratedConfig.packageRules)
? migratedConfig.packageRules
: [];