Skip to content
Snippets Groups Projects
Select Git revision
21 results Searching

index.spec.ts

  • 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
                : [];