From e7ef20d33bdc01c930a9cf1127ddeceaa5a0676b Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Sun, 6 May 2018 11:59:33 +0200 Subject: [PATCH] refactor: simplify config stages --- lib/config/definitions.js | 50 ++++++++++++---------- lib/config/index.js | 10 +---- test/workers/package-file/dep-type.spec.js | 9 ---- 3 files changed, 28 insertions(+), 41 deletions(-) diff --git a/lib/config/definitions.js b/lib/config/definitions.js index 57d7560816..7600539e49 100644 --- a/lib/config/definitions.js +++ b/lib/config/definitions.js @@ -30,6 +30,7 @@ const options = [ name: 'description', description: 'Plain text description for a config or preset', type: 'list', + stage: 'repository', allowString: true, mergeable: true, cli: false, @@ -221,7 +222,7 @@ const options = [ { name: 'ignoreNpmrcFile', description: 'Whether to ignore any .npmrc file found in repository', - stage: 'packageFile', + stage: 'package', type: 'boolean', default: false, }, @@ -244,6 +245,7 @@ const options = [ description: 'An array of one or more custom base branches to be renovated. If left empty, the default branch will be renovate', type: 'list', + stage: 'package', cli: false, env: false, }, @@ -293,7 +295,7 @@ const options = [ { name: 'engines', description: 'Configuration specifically for `package.json`>`engines`', - stage: 'packageFile', + stage: 'package', type: 'json', default: {}, mergeable: true, @@ -304,14 +306,14 @@ const options = [ name: 'ignoreDeps', description: 'Dependencies to ignore', type: 'list', - stage: 'depType', + stage: 'package', mergeable: true, }, { name: 'packageRules', description: 'Rules for matching package names', type: 'list', - stage: 'depType', + stage: 'package', mergeable: true, cli: false, env: false, @@ -322,8 +324,8 @@ const options = [ 'List of depTypes to match (e.g. [`peerDependencies`]). Valid only within `packageRules` object', type: 'list', allowString: true, - stage: 'depType', parent: 'packageRules', + stage: 'package', mergeable: true, cli: false, env: false, @@ -334,7 +336,7 @@ const options = [ 'Package names to match. Valid only within `packageRules` object', type: 'list', allowString: true, - stage: 'depType', + stage: 'package', parent: 'packageRules', mergeable: true, cli: false, @@ -346,7 +348,7 @@ const options = [ 'Package names to exclude. Valid only within `packageRules` object', type: 'list', allowString: true, - stage: 'depType', + stage: 'package', parent: 'packageRules', mergeable: true, cli: false, @@ -358,7 +360,7 @@ const options = [ 'Package name patterns to match. Valid only within `packageRules` object.', type: 'list', allowString: true, - stage: 'depType', + stage: 'package', parent: 'packageRules', mergeable: true, cli: false, @@ -370,7 +372,7 @@ const options = [ 'Package name patterns to exclude. Valid only within `packageRules` object.', type: 'list', allowString: true, - stage: 'depType', + stage: 'package', parent: 'packageRules', mergeable: true, cli: false, @@ -381,7 +383,7 @@ const options = [ description: 'A version or version range to match against the current version of a package. Valid only within `packageRules` object', type: 'string', - stage: 'depType', + stage: 'package', parent: 'packageRules', mergeable: true, cli: false, @@ -739,7 +741,7 @@ const options = [ { name: 'lockFileMaintenance', description: 'Configuration for lock file maintenance', - stage: 'packageFile', + stage: 'branch', type: 'json', default: { enabled: false, @@ -813,6 +815,7 @@ const options = [ name: 'fileMatch', description: 'JS RegExp pattern for matching manager files', type: 'list', + stage: 'repository', allowString: true, mergeable: true, cli: false, @@ -821,7 +824,7 @@ const options = [ { name: 'npm', description: 'Configuration object for npm package.json renovation', - stage: 'repository', + stage: 'package', type: 'json', default: { fileMatch: ['(^|/)package.json$'], @@ -831,7 +834,7 @@ const options = [ { name: 'meteor', description: 'Configuration object for meteor package.js renovation', - stage: 'repository', + stage: 'package', type: 'json', default: { fileMatch: ['(^|/)package.js$'], @@ -841,7 +844,7 @@ const options = [ { name: 'bazel', description: 'Configuration object for bazel WORKSPACE renovation', - stage: 'repository', + stage: 'package', type: 'json', default: { fileMatch: ['(^|/)WORKSPACE$'], @@ -851,7 +854,7 @@ const options = [ { name: 'buildkite', description: 'Configuration object for buildkite pipeline renovation', - stage: 'repository', + stage: 'package', type: 'json', default: { fileMatch: ['\\.buildkite/.+\\.yml$'], @@ -867,12 +870,13 @@ const options = [ description: 'Dependency support policy, e.g. used for LTS vs non-LTS etc (node-only)', type: 'list', + stage: 'package', allowString: true, }, { name: 'node', description: 'Configuration object for node version renovation', - stage: 'repository', + stage: 'package', type: 'json', default: { groupName: 'Node.js', @@ -887,7 +891,7 @@ const options = [ { name: 'travis', description: 'Configuration object for .travis.yml node version renovation', - stage: 'repository', + stage: 'package', type: 'json', default: { enabled: false, @@ -899,7 +903,7 @@ const options = [ { name: 'nvm', description: 'Configuration object for .nvmrc files', - state: 'repository', + stage: 'package', type: 'json', default: { fileMatch: ['^.nvmrc$'], @@ -910,7 +914,7 @@ const options = [ { name: 'docker', description: 'Configuration object for Dockerfile renovation', - stage: 'repository', + stage: 'package', type: 'json', default: { fileMatch: ['(^|/)Dockerfile$'], @@ -950,7 +954,7 @@ const options = [ name: 'docker-compose', description: 'Configuration object for Docker Compose renovation. Also inherits settings from `docker` object.', - stage: 'repository', + stage: 'package', type: 'json', default: { fileMatch: ['(^|/)docker-compose[^/]*\\.ya?ml$'], @@ -962,7 +966,7 @@ const options = [ name: 'circleci', description: 'Configuration object for CircleCI yml renovation. Also inherits settings from `docker` object.', - stage: 'repository', + stage: 'package', type: 'json', default: { fileMatch: ['^.circleci/config.yml$'], @@ -973,7 +977,7 @@ const options = [ { name: 'pip_requirements', description: 'Configuration object for requirements.txt files', - state: 'repository', + stage: 'package', type: 'json', default: { enabled: false, @@ -985,7 +989,7 @@ const options = [ { name: 'python', description: 'Configuration object for python', - state: 'repository', + stage: 'package', type: 'json', default: {}, mergeable: true, diff --git a/lib/config/index.js b/lib/config/index.js index 8193d1d920..af3d4e7eb2 100644 --- a/lib/config/index.js +++ b/lib/config/index.js @@ -162,15 +162,7 @@ function mergeChildConfig(parent, child) { function filterConfig(inputConfig, targetStage) { logger.trace({ config: inputConfig }, `filterConfig('${targetStage}')`); const outputConfig = { ...inputConfig }; - const stages = [ - 'global', - 'repository', - 'packageFile', - 'depType', - 'package', - 'branch', - 'pr', - ]; + const stages = ['global', 'repository', 'package', 'branch', 'pr']; const targetIndex = stages.indexOf(targetStage); for (const option of definitions.getOptions()) { const optionIndex = stages.indexOf(option.stage); diff --git a/test/workers/package-file/dep-type.spec.js b/test/workers/package-file/dep-type.spec.js index c92bf6dfdf..0130124be0 100644 --- a/test/workers/package-file/dep-type.spec.js +++ b/test/workers/package-file/dep-type.spec.js @@ -156,7 +156,6 @@ describe('lib/workers/package-file/dep-type', () => { const res = depTypeWorker.getDepConfig(depTypeConfig, dep); expect(res.x).toBe(2); expect(res.y).toBe(2); - expect(res.packageRules).toBeUndefined(); }); it('applies both rules for b', () => { const dep = { @@ -165,7 +164,6 @@ describe('lib/workers/package-file/dep-type', () => { const res = depTypeWorker.getDepConfig(depTypeConfig, dep); expect(res.x).toBe(2); expect(res.y).toBe(2); - expect(res.packageRules).toBeUndefined(); }); it('applies the second rule', () => { const dep = { @@ -174,7 +172,6 @@ describe('lib/workers/package-file/dep-type', () => { const res = depTypeWorker.getDepConfig(depTypeConfig, dep); expect(res.x).toBeUndefined(); expect(res.y).toBe(2); - expect(res.packageRules).toBeUndefined(); }); it('applies the second second rule', () => { const dep = { @@ -183,7 +180,6 @@ describe('lib/workers/package-file/dep-type', () => { const res = depTypeWorker.getDepConfig(depTypeConfig, dep); expect(res.x).toBeUndefined(); expect(res.y).toBe(2); - expect(res.packageRules).toBeUndefined(); }); it('excludes package name', () => { const dep = { @@ -192,7 +188,6 @@ describe('lib/workers/package-file/dep-type', () => { const res = depTypeWorker.getDepConfig(depTypeConfig, dep); expect(res.x).toBeUndefined(); expect(res.y).toBeUndefined(); - expect(res.packageRules).toBeUndefined(); }); it('excludes package pattern', () => { const dep = { @@ -201,7 +196,6 @@ describe('lib/workers/package-file/dep-type', () => { const res = depTypeWorker.getDepConfig(depTypeConfig, dep); expect(res.x).toBeUndefined(); expect(res.y).toBeUndefined(); - expect(res.packageRules).toBeUndefined(); }); it('filters depType', () => { const config = { @@ -219,7 +213,6 @@ describe('lib/workers/package-file/dep-type', () => { }; const res = depTypeWorker.getDepConfig(config, dep); expect(res.x).toBe(1); - expect(res.packageRules).toBeUndefined(); }); it('filters naked depType', () => { const config = { @@ -236,7 +229,6 @@ describe('lib/workers/package-file/dep-type', () => { }; const res = depTypeWorker.getDepConfig(config, dep); expect(res.x).toBe(1); - expect(res.packageRules).toBeUndefined(); }); it('filters depType', () => { const config = { @@ -254,7 +246,6 @@ describe('lib/workers/package-file/dep-type', () => { }; const res = depTypeWorker.getDepConfig(config, dep); expect(res.x).toBeUndefined(); - expect(res.packageRules).toBeUndefined(); }); it('checks if matchCurrentVersion selector is valid and satisfies the condition on range overlap', () => { const config = { -- GitLab