diff --git a/lib/workers/repository/updates/flatten.js b/lib/workers/repository/updates/flatten.js index 2caf46351553e28f8f9bb78dcac0fee220be84ef..af9ead4240f45758d48d78fe873de2953a1ae613 100644 --- a/lib/workers/repository/updates/flatten.js +++ b/lib/workers/repository/updates/flatten.js @@ -1,3 +1,4 @@ +const is = require('@sindresorhus/is'); const { getManagerConfig, mergeChildConfig, @@ -10,6 +11,11 @@ module.exports = { flattenUpdates, }; +// Return only rules that contain an updateType +function getUpdateTypeRules(packageRules) { + return packageRules.filter(rule => !is.empty(rule.updateTypes)); +} + function flattenUpdates(config, packageFiles) { const updates = []; for (const [manager, files] of Object.entries(packageFiles)) { @@ -24,8 +30,10 @@ function flattenUpdates(config, packageFiles) { let updateConfig = mergeChildConfig(depConfig, update); delete updateConfig.updates; updateConfig = applyPackageRules(updateConfig); - // Now we're finished with these packageRules - updateConfig.packageRules = []; + // Keep only rules that haven't been applied yet (with updateTypes) + updateConfig.packageRules = getUpdateTypeRules( + updateConfig.packageRules + ); // apply major/minor/patch/pin/digest updateConfig = mergeChildConfig( updateConfig, diff --git a/test/workers/repository/updates/flatten.spec.js b/test/workers/repository/updates/flatten.spec.js index 6245d303d8f1caf8de97e9cf0fb3cbc2e12df124..e5ba3ea8be1818f5f934fa2b759b7b37f3ec78f9 100644 --- a/test/workers/repository/updates/flatten.spec.js +++ b/test/workers/repository/updates/flatten.spec.js @@ -14,6 +14,12 @@ describe('workers/repository/updates/flatten', () => { describe('flattenUpdates()', () => { it('flattens', async () => { config.lockFileMaintenance.enabled = true; + config.packageRules = [ + { + updateTypes: ['minor'], + automerge: true, + }, + ]; const packageFiles = { npm: [ {