From b93e072ca9da2c7da34d3c523148279dfae2d73e Mon Sep 17 00:00:00 2001 From: Sergio Zharinov Date: Thu, 25 Jun 2020 10:50:11 +0400 Subject: [PATCH] refactor: Reorder extractions and lookups (#6578) Co-authored-by: Rhys Arkins --- .../repository/process/extract-update.spec.ts | 5 +- .../repository/process/extract-update.ts | 20 ++++---- lib/workers/repository/process/index.ts | 46 +++++++++++++------ 3 files changed, 47 insertions(+), 24 deletions(-) diff --git a/lib/workers/repository/process/extract-update.spec.ts b/lib/workers/repository/process/extract-update.spec.ts index d599e9ef24cc73..429cd72ea79ec8 100644 --- a/lib/workers/repository/process/extract-update.spec.ts +++ b/lib/workers/repository/process/extract-update.spec.ts @@ -1,6 +1,6 @@ import { mocked } from '../../../../test/util'; import * as _branchify from '../updates/branchify'; -import { extract, update } from './extract-update'; +import { extract, lookup, update } from './extract-update'; jest.mock('./write'); jest.mock('./sort'); @@ -22,7 +22,8 @@ describe('workers/repository/process/extract-update', () => { repoIsOnboarded: true, suppressNotifications: ['deprecationWarningIssues'], }; - const res = await extract(config); + const packageFiles = await extract(config); + const res = await lookup(config, packageFiles); expect(res).toMatchSnapshot(); await expect(update(config, res.branches)).resolves.not.toThrow(); }); diff --git a/lib/workers/repository/process/extract-update.ts b/lib/workers/repository/process/extract-update.ts index 756e10e65ba643..2c4d9bcba3fd21 100644 --- a/lib/workers/repository/process/extract-update.ts +++ b/lib/workers/repository/process/extract-update.ts @@ -1,7 +1,6 @@ import { RenovateConfig } from '../../../config'; import { logger } from '../../../logger'; import { PackageFile } from '../../../manager/common'; -import { addSplit } from '../../../util/split'; import { BranchConfig } from '../../common'; import { extractAllDependencies } from '../extract'; import { branchifyUpgrades } from '../updates/branchify'; @@ -44,18 +43,24 @@ function extractStats(packageFiles: Record): any { return stats; } -export async function extract(config: RenovateConfig): Promise { - logger.debug('extractAndUpdate()'); +export async function extract( + config: RenovateConfig +): Promise> { + logger.debug('extract()'); const packageFiles = await extractAllDependencies(config); const stats = extractStats(packageFiles); logger.info( { baseBranch: config.baseBranch, stats }, `Dependency extraction complete` ); - addSplit( - config.baseBranches?.length ? `extract:${config.baseBranch}` : 'extract' - ); logger.trace({ config: packageFiles }, 'packageFiles'); + return packageFiles; +} + +export async function lookup( + config: RenovateConfig, + packageFiles: Record +): Promise { await fetchUpdates(config, packageFiles); logger.debug({ config: packageFiles }, 'packageFiles with updates'); await raiseDeprecationWarnings(config, packageFiles); @@ -64,9 +69,6 @@ export async function extract(config: RenovateConfig): Promise { packageFiles ); sortBranches(branches); - addSplit( - config.baseBranches?.length ? `lookup:${config.baseBranch}` : 'lookup' - ); return { branches, branchList, packageFiles }; } diff --git a/lib/workers/repository/process/index.ts b/lib/workers/repository/process/index.ts index a9175e69e7920b..8c672386e8dfb2 100644 --- a/lib/workers/repository/process/index.ts +++ b/lib/workers/repository/process/index.ts @@ -1,10 +1,26 @@ import { RenovateConfig, mergeChildConfig } from '../../../config'; import { logger } from '../../../logger'; +import { PackageFile } from '../../../manager/common'; import { platform } from '../../../platform'; +import { addSplit } from '../../../util/split'; import { BranchConfig } from '../../common'; -import { ExtractResult, extract, update } from './extract-update'; +import { ExtractResult, extract, lookup, update } from './extract-update'; import { WriteUpdateResult } from './write'; +async function setBaseBranch( + baseBranch: string, + config: RenovateConfig +): Promise { + logger.debug(`baseBranch: ${baseBranch}`); + const baseBranchConfig = mergeChildConfig(config, { baseBranch }); + if (config.baseBranches.length > 1) { + baseBranchConfig.branchPrefix += `${baseBranch}-`; + baseBranchConfig.hasBaseBranches = true; + } + baseBranchConfig.baseBranchSha = await platform.setBaseBranch(baseBranch); + return baseBranchConfig; +} + export async function extractDependencies( config: RenovateConfig ): Promise { @@ -50,23 +66,27 @@ export async function extractDependencies( }; if (config.baseBranches && config.baseBranches.length) { logger.debug({ baseBranches: config.baseBranches }, 'baseBranches'); + const extracted: Record> = {}; for (const baseBranch of config.baseBranches) { - logger.debug(`baseBranch: ${baseBranch}`); - const baseBranchConfig = mergeChildConfig(config, { baseBranch }); - if (config.baseBranches.length > 1) { - baseBranchConfig.branchPrefix += `${baseBranch}-`; - baseBranchConfig.hasBaseBranches = true; - } - baseBranchConfig.baseBranchSha = await platform.setBaseBranch(baseBranch); - const baseBranchRes = await extract(baseBranchConfig); - res.branches = res.branches.concat(baseBranchRes.branches); - res.branchList = res.branchList.concat(baseBranchRes.branchList); - res.packageFiles = res.packageFiles || baseBranchRes.packageFiles; // Use the first branch + const baseBranchConfig = await setBaseBranch(baseBranch, config); + extracted[baseBranch] = await extract(baseBranchConfig); + } + addSplit('extract'); + for (const baseBranch of config.baseBranches) { + const baseBranchConfig = await setBaseBranch(baseBranch, config); + const packageFiles = extracted[baseBranch]; + const baseBranchRes = await lookup(baseBranchConfig, packageFiles); + res.branches = res.branches.concat(baseBranchRes?.branches); + res.branchList = res.branchList.concat(baseBranchRes?.branchList); + res.packageFiles = res.packageFiles || baseBranchRes?.packageFiles; // Use the first branch } } else { logger.debug('No baseBranches'); - res = await extract(config); + const packageFiles = await extract(config); + addSplit('extract'); + res = await lookup(config, packageFiles); } + addSplit('lookup'); return res; }