diff --git a/lib/logger/__mocks__/index.ts b/lib/logger/__mocks__/index.ts index 36b7185649965915db5e4f0d0f2c7dc860ba104e..4601ac1f30ac2a7e98eb7679dfe76ce239c77d71 100644 --- a/lib/logger/__mocks__/index.ts +++ b/lib/logger/__mocks__/index.ts @@ -14,6 +14,8 @@ loggerLevels.forEach(k => { }); export const setMeta = jest.fn(); +export const addMeta = jest.fn(); +export const removeMeta = jest.fn(); export const levels = jest.fn(); export const addStream = jest.fn(); export const getErrors = (): any[] => []; diff --git a/lib/logger/index.ts b/lib/logger/index.ts index ec499ade79dc4ab1695f5fe379803f95165064f0..e91ce7733f1ff99de8625514c41cccd7c24a2a83 100644 --- a/lib/logger/index.ts +++ b/lib/logger/index.ts @@ -97,11 +97,25 @@ loggerLevels.forEach(loggerLevel => { logger[loggerLevel] = logFactory(loggerLevel); }); -// setMeta overrides existing meta +// setMeta overrides existing meta, may remove fields if no longer existing export function setMeta(obj: any): void { meta = { ...obj }; } +// addMeta overrides or adds fields but does not remove any +export function addMeta(obj: any): void { + meta = { ...meta, ...obj }; +} + +// removeMeta removes the provided fields from meta +export function removeMeta(fields: string[]): void { + Object.keys(meta).forEach(key => { + if (fields.includes(key)) { + delete meta[key]; + } + }); +} + export /* istanbul ignore next */ function addStream( stream: bunyan.Stream ): void { diff --git a/lib/workers/branch/index.ts b/lib/workers/branch/index.ts index 5c6767d5c3604bbcc1b124dda32ea9be88dbd52f..f66bdfac916bfcf2fb0dd86cb478901bd6951035 100644 --- a/lib/workers/branch/index.ts +++ b/lib/workers/branch/index.ts @@ -1,6 +1,6 @@ import { DateTime } from 'luxon'; -import { logger, setMeta } from '../../logger'; +import { logger } from '../../logger'; import { isScheduledNow } from './schedule'; import { getUpdatedPackageFiles } from './get-updated'; import { @@ -53,11 +53,6 @@ export async function processBranch( .map(upgrade => upgrade.depName) .filter(v => v) // remove nulls (happens for lock file maintenance) .filter((value, i, list) => list.indexOf(value) === i); // remove duplicates - setMeta({ - repository: config.repository, - branch: config.branchName, - dependencies, - }); logger.debug( { dependencies }, `processBranch with ${branchConfig.upgrades.length} upgrades` diff --git a/lib/workers/repository/error.ts b/lib/workers/repository/error.ts index a12820b8899646b8c7b4e02393848fa9d3103b58..5882d7727eacc505f277a82a53713127342eb71e 100644 --- a/lib/workers/repository/error.ts +++ b/lib/workers/repository/error.ts @@ -1,4 +1,4 @@ -import { logger, setMeta } from '../../logger'; +import { logger } from '../../logger'; import { raiseConfigWarningIssue } from './error-config'; import { RenovateConfig } from '../../config'; @@ -6,10 +6,6 @@ export default async function handleError( config: RenovateConfig, err: Error ): Promise<string> { - setMeta({ - repository: config.repository, - }); - if (err.message === 'uninitiated') { logger.info('Repository is uninitiated - skipping'); delete config.branchList; // eslint-disable-line no-param-reassign diff --git a/lib/workers/repository/finalise/validate.ts b/lib/workers/repository/finalise/validate.ts index 455285a3fe693d9d9f1856a1c4b25ccca8277714..9d67512c26f8c4c1619d90a897753722a29ae517 100644 --- a/lib/workers/repository/finalise/validate.ts +++ b/lib/workers/repository/finalise/validate.ts @@ -1,5 +1,5 @@ import JSON5 from 'json5'; -import { logger, setMeta } from '../../../logger'; +import { logger } from '../../../logger'; import { migrateAndValidate } from '../../../config/migrate-validate'; import { configFileNames } from '../../../config/app-strings'; import { platform, Pr } from '../../../platform'; @@ -25,7 +25,6 @@ export async function validatePrs(config: RenovateConfig): Promise<void> { ) { return; } - setMeta({ repository: config.repository }); logger.debug('branchPrefix: ' + config.branchPrefix); const renovatePrs = await getRenovatePrs(config.branchPrefix); logger.debug({ renovatePrs }, `Found ${renovatePrs.length} Renovate PRs`); diff --git a/lib/workers/repository/index.ts b/lib/workers/repository/index.ts index 551dc5929305bedf836807390a7952d287ecb0bf..91fb726e14c7c6406b2f7a454746b37c20a5a031 100644 --- a/lib/workers/repository/index.ts +++ b/lib/workers/repository/index.ts @@ -41,6 +41,7 @@ export async function renovateRepository( await finaliseRepo(config, branchList); repoResult = processResult(config, res); } catch (err) /* istanbul ignore next */ { + setMeta({ repository: config.repository }); const errorRes = await handleError(config, err); repoResult = processResult(config, errorRes); } diff --git a/lib/workers/repository/process/index.ts b/lib/workers/repository/process/index.ts index 9efbbd61c11d47e05c54ff451db8af7a26fa7972..d386df4c8107338ab324830fc02643d4dc8a818e 100644 --- a/lib/workers/repository/process/index.ts +++ b/lib/workers/repository/process/index.ts @@ -1,4 +1,4 @@ -import { logger, setMeta } from '../../../logger'; +import { logger } from '../../../logger'; import { mergeChildConfig, RenovateConfig } from '../../../config'; import { extractAndUpdate, ExtractAndUpdateResult } from './extract-update'; import { platform } from '../../../platform'; @@ -47,9 +47,6 @@ export async function processRepo( let branches: BranchConfig[] = []; let branchList: string[] = []; for (const baseBranch of config.baseBranches) { - setMeta({ - repository: config.repository, - }); logger.debug(`baseBranch: ${baseBranch}`); const baseBranchConfig = mergeChildConfig(config, { baseBranch }); if (config.baseBranches.length > 1) { diff --git a/lib/workers/repository/process/write.ts b/lib/workers/repository/process/write.ts index 89eef5f71da3a610928923805d35e81584e9b58b..368d0fe719fbe0b39b4378c1b1c26413d3974ca3 100644 --- a/lib/workers/repository/process/write.ts +++ b/lib/workers/repository/process/write.ts @@ -1,4 +1,4 @@ -import { logger } from '../../../logger'; +import { logger, addMeta, removeMeta } from '../../../logger'; import { processBranch } from '../../branch'; import { getPrsRemaining } from './limits'; import { getLimitRemaining } from '../../global/limits'; @@ -32,6 +32,7 @@ export async function writeUpdates( }); let prsRemaining = await getPrsRemaining(config, branches); for (const branch of branches) { + addMeta({ branch: branch.branchName }); const res = await processBranch( branch, prsRemaining <= 0 || getLimitRemaining('prCommitsPerRunLimit') <= 0, @@ -44,5 +45,6 @@ export async function writeUpdates( } prsRemaining -= res === 'pr-created' ? 1 : 0; } + removeMeta(['branch']); return 'done'; } diff --git a/lib/workers/repository/updates/branchify.ts b/lib/workers/repository/updates/branchify.ts index 40375a037930172e910871a1829662f294a9f9b7..93ea6c5b94cf90f7f0d535ed4b1f4a25c9d42f59 100644 --- a/lib/workers/repository/updates/branchify.ts +++ b/lib/workers/repository/updates/branchify.ts @@ -1,7 +1,7 @@ import slugify from 'slugify'; import handlebars from 'handlebars'; import { clean as cleanGitRef } from 'clean-git-ref'; -import { logger, setMeta } from '../../../logger'; +import { logger, addMeta, removeMeta } from '../../../logger'; import { generateBranchConfig } from './generate'; import { flattenUpdates } from './flatten'; @@ -88,17 +88,15 @@ export function branchifyUpgrades( } logger.debug(`Returning ${Object.keys(branchUpgrades).length} branch(es)`); for (const branchName of Object.keys(branchUpgrades)) { - setMeta({ - repository: config.repository, + // Add branch name to metadata before generating branch config + addMeta({ branch: branchName, }); const branch = generateBranchConfig(branchUpgrades[branchName]); branch.branchName = branchName; branches.push(branch); } - setMeta({ - repository: config.repository, - }); + removeMeta(['branch']); logger.debug(`config.repoIsOnboarded=${config.repoIsOnboarded}`); const branchList = config.repoIsOnboarded ? branches.map(upgrade => upgrade.branchName) diff --git a/test/logger/index.spec.ts b/test/logger/index.spec.ts index 30eea4810c1ebac12612fe6aad6e633d0f72375b..003354973970f0d0cf9ec465be503b9d0d92263e 100644 --- a/test/logger/index.spec.ts +++ b/test/logger/index.spec.ts @@ -2,6 +2,8 @@ import _fs from 'fs-extra'; import { logger, setMeta, + addMeta, + removeMeta, levels, getErrors, addStream, @@ -31,6 +33,14 @@ describe('logger', () => { setMeta({ any: 'test' }); }); + it('adds meta', () => { + addMeta({ new: 'test' }); + }); + + it('removes meta', () => { + removeMeta(['new']); + }); + it('sets level', () => { levels('stdout', 'debug'); });