Skip to content
Snippets Groups Projects
Select Git revision
1 result Searching

index.ts

Blame
  • index.ts 3.68 KiB
    import { RenovateConfig, mergeChildConfig } from '../../../config';
    import { logger } from '../../../logger';
    import { PackageFile } from '../../../manager/common';
    import { platform } from '../../../platform';
    import { branchExists } from '../../../util/git';
    import { addSplit } from '../../../util/split';
    import { BranchConfig } from '../../common';
    import { ExtractResult, extract, lookup, update } from './extract-update';
    import { WriteUpdateResult } from './write';
    
    function getBaseBranchConfig(
      baseBranch: string,
      config: RenovateConfig
    ): RenovateConfig {
      logger.debug(`baseBranch: ${baseBranch}`);
      const baseBranchConfig = mergeChildConfig(config, { baseBranch });
      if (config.baseBranches.length > 1) {
        baseBranchConfig.branchPrefix += `${baseBranch}-`;
        baseBranchConfig.hasBaseBranches = true;
      }
      return baseBranchConfig;
    }
    
    export async function extractDependencies(
      config: RenovateConfig
    ): Promise<ExtractResult> {
      logger.debug('processRepo()');
      /* eslint-disable no-param-reassign */
      config.dependencyDashboardChecks = {};
      const stringifiedConfig = JSON.stringify(config);
      // istanbul ignore next
      if (
        config.dependencyDashboard ||
        stringifiedConfig.includes('"dependencyDashboardApproval":true') ||
        stringifiedConfig.includes('"prCreation":"approval"')
      ) {
        config.dependencyDashboardTitle =
          config.dependencyDashboardTitle || `Dependency Dashboard`;
        const issue = await platform.findIssue(config.dependencyDashboardTitle);
        if (issue) {
          const checkMatch = ' - \\[x\\] <!-- ([a-zA-Z]+)-branch=([^\\s]+) -->';
          const checked = issue.body.match(new RegExp(checkMatch, 'g'));
          if (checked?.length) {
            const re = new RegExp(checkMatch);
            checked.forEach((check) => {
              const [, type, branchName] = re.exec(check);
              config.dependencyDashboardChecks[branchName] = type;
            });
          }
          const checkedRebaseAll = issue.body.includes(
            ' - [x] <!-- rebase-all-open-prs -->'
          );
          if (checkedRebaseAll) {
            config.dependencyDashboardRebaseAllOpen = true;
            /* eslint-enable no-param-reassign */
          }
        }
      }
      let res: ExtractResult = {
        branches: [],
        branchList: [],
        packageFiles: null,
      };
      if (config.baseBranches?.length) {
        logger.debug({ baseBranches: config.baseBranches }, 'baseBranches');
        const extracted: Record<string, Record<string, PackageFile[]>> = {};
        for (const baseBranch of config.baseBranches) {
          if (branchExists(baseBranch)) {
            const baseBranchConfig = getBaseBranchConfig(baseBranch, config);
            extracted[baseBranch] = await extract(baseBranchConfig);