Select Git revision
migration.ts
migration.ts 22.92 KiB
import later from '@breejs/later';
import is from '@sindresorhus/is';
import { dequal } from 'dequal';
import { logger } from '../logger';
import type { HostRule } from '../types';
import { clone } from '../util/clone';
import { getOptions } from './definitions';
import { removedPresets } from './presets/common';
import type { PackageRule, 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',
];
export interface MigratedConfig {
isMigrated: boolean;
migratedConfig: RenovateConfig;
}
interface MigratedRenovateConfig extends RenovateConfig {
endpoints?: HostRule[];
pathRules: PackageRule[];
packages: PackageRule[];
node?: RenovateConfig;
travis?: RenovateConfig;
}
// Returns a migrated config
export function migrateConfig(
config: RenovateConfig,
// TODO: remove any type
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',
];
for (const [key, val] of Object.entries(config)) {
if (removedOptions.includes(key)) {
delete migratedConfig[key];
} else if (key === 'pathRules') {