diff --git a/lib/manager/bazel/index.js b/lib/manager/bazel/index.js index 2b8661f14ce4f034952e684d47b0fa0298f916c6..9dff0933179bbffd31a80227c39d5bed59560245 100644 --- a/lib/manager/bazel/index.js +++ b/lib/manager/bazel/index.js @@ -1,6 +1,5 @@ const { extractDependencies } = require('./extract'); const { getPackageUpdates } = require('./package'); -const { resolvePackageFile } = require('./resolve'); const { updateDependency } = require('./update'); const filePattern = new RegExp('(^|/)WORKSPACE$'); @@ -11,6 +10,5 @@ module.exports = { extractDependencies, filePattern, getPackageUpdates, - resolvePackageFile, updateDependency, }; diff --git a/lib/manager/bazel/resolve.js b/lib/manager/bazel/resolve.js deleted file mode 100644 index 95dbb2415e7992430a00817e65ea2541547f7e79..0000000000000000000000000000000000000000 --- a/lib/manager/bazel/resolve.js +++ /dev/null @@ -1,18 +0,0 @@ -const configParser = require('../../config'); - -module.exports = { - resolvePackageFile, -}; - -async function resolvePackageFile(config, inputFile) { - const packageFile = configParser.mergeChildConfig(config.bazel, inputFile); - logger.debug( - `Resolving packageFile ${JSON.stringify(packageFile.packageFile)}` - ); - packageFile.content = await platform.getFile(packageFile.packageFile); - if (!packageFile.content) { - logger.debug('No packageFile content'); - return null; - } - return packageFile; -} diff --git a/lib/manager/circleci/index.js b/lib/manager/circleci/index.js index 12f9387763b3988e3dc84201c1683b05c79982ca..068d2f113c541faeda6070bcc9c08be4f85118ec 100644 --- a/lib/manager/circleci/index.js +++ b/lib/manager/circleci/index.js @@ -1,16 +1,16 @@ const { extractDependencies } = require('./extract'); const { getPackageUpdates } = require('../docker/package'); -const { resolvePackageFile } = require('./resolve'); const { updateDependency } = require('./update'); const filePattern = new RegExp('^.circleci/config.yml$'); const contentPattern = new RegExp('(^|\\n)\\s*- image: '); +const parentManager = 'docker'; module.exports = { contentPattern, extractDependencies, filePattern, getPackageUpdates, - resolvePackageFile, + parentManager, updateDependency, }; diff --git a/lib/manager/circleci/resolve.js b/lib/manager/circleci/resolve.js deleted file mode 100644 index 0e45b03da8e170385e3320af36193e08bed9ccb4..0000000000000000000000000000000000000000 --- a/lib/manager/circleci/resolve.js +++ /dev/null @@ -1,19 +0,0 @@ -const { mergeChildConfig } = require('../../config'); - -module.exports = { - resolvePackageFile, -}; - -async function resolvePackageFile(config, inputFile) { - const composeConfig = mergeChildConfig(config.docker, config.circleci); - const packageFile = mergeChildConfig(composeConfig, inputFile); - logger.debug( - `Resolving packageFile ${JSON.stringify(packageFile.packageFile)}` - ); - packageFile.content = await platform.getFile(packageFile.packageFile); - if (!packageFile.content) { - logger.debug('No packageFile content'); - return null; - } - return packageFile; -} diff --git a/lib/manager/docker-compose/index.js b/lib/manager/docker-compose/index.js index a496cca16848ad94f5f66ed03a1481eca485de53..3f5ed7f32aad7407cc6800a41837b5b2fb13f4ec 100644 --- a/lib/manager/docker-compose/index.js +++ b/lib/manager/docker-compose/index.js @@ -5,12 +5,14 @@ const { updateDependency } = require('./update'); const filePattern = new RegExp('(^|/)docker-compose[^/]*\\.ya?ml$'); const contentPattern = new RegExp('(^|\\n)\\s*image:'); +const parentManager = 'docker'; module.exports = { contentPattern, extractDependencies, filePattern, getPackageUpdates, + parentManager, resolvePackageFile, updateDependency, }; diff --git a/lib/manager/index.js b/lib/manager/index.js index 295c9037474b5ee26276fdda673b9ceaf0ddca24..3868e48f2f710f664aeac39ca2f29ec631f39426 100644 --- a/lib/manager/index.js +++ b/lib/manager/index.js @@ -159,11 +159,12 @@ async function resolvePackageFiles(config) { ? config.packageFiles : await detectPackageFiles(config); logger.debug({ allPackageFiles }, 'allPackageFiles'); - function resolvePackageFile(p) { - const packageFile = typeof p === 'string' ? { packageFile: p } : p; + async function resolvePackageFile(p) { + let packageFile = typeof p === 'string' ? { packageFile: p } : p; const fileName = packageFile.packageFile.split('/').pop(); packageFile.manager = packageFile.manager || getManager(fileName); - if (!packageFile.manager) { + const { manager } = packageFile; + if (!manager) { // Config error const error = new Error('config-validation'); error.configFile = packageFile.packageFile; @@ -172,10 +173,25 @@ async function resolvePackageFiles(config) { 'Please correct the file name in your packageFiles array'; throw error; } - return managers[packageFile.manager].resolvePackageFile( - config, - packageFile + if (managers[manager].resolvePackageFile) { + return managers[manager].resolvePackageFile(config, packageFile); + } + const { parentManager } = managers[manager]; + const parentManagerConfig = parentManager ? config[parentManager] : {}; + const managerConfig = mergeChildConfig( + parentManagerConfig, + config[manager] + ); + packageFile = mergeChildConfig(managerConfig, packageFile); + logger.debug( + `Resolving packageFile ${JSON.stringify(packageFile.packageFile)}` ); + packageFile.content = await platform.getFile(packageFile.packageFile); + if (!packageFile.content) { + logger.debug('No packageFile content'); + return null; + } + return packageFile; } // TODO: throttle how many we resolve in parallel const queue = allPackageFiles.map(p => resolvePackageFile(p)); diff --git a/lib/manager/meteor/index.js b/lib/manager/meteor/index.js index fab391044a9fda1abb0c22dc40b662a4d54e0204..8b13499f4050145601b0f282d4ce3ae0b333824b 100644 --- a/lib/manager/meteor/index.js +++ b/lib/manager/meteor/index.js @@ -1,6 +1,5 @@ const { extractDependencies } = require('./extract'); const { getPackageUpdates } = require('../npm/package'); -const { resolvePackageFile } = require('./resolve'); const { updateDependency } = require('./update'); const filePattern = new RegExp('(^|/)package.js$'); @@ -11,6 +10,5 @@ module.exports = { extractDependencies, filePattern, getPackageUpdates, - resolvePackageFile, updateDependency, }; diff --git a/lib/manager/meteor/resolve.js b/lib/manager/meteor/resolve.js deleted file mode 100644 index e44ae381f0a803f8b6dc1d5f811c0fe408bc89ca..0000000000000000000000000000000000000000 --- a/lib/manager/meteor/resolve.js +++ /dev/null @@ -1,18 +0,0 @@ -const configParser = require('../../config'); - -module.exports = { - resolvePackageFile, -}; - -async function resolvePackageFile(config, inputFile) { - const packageFile = configParser.mergeChildConfig(config.meteor, inputFile); - logger.debug( - `Resolving packageFile ${JSON.stringify(packageFile.packageFile)}` - ); - packageFile.content = await platform.getFile(packageFile.packageFile); - if (!packageFile.content) { - logger.debug('No packageFile content'); - return null; - } - return packageFile; -} diff --git a/lib/manager/nvm/index.js b/lib/manager/nvm/index.js index 91e5d8175f1ed2af2be39d9fb2882b41f46a5370..57f3860c9190cecf308635352bfbba87363fb4d5 100644 --- a/lib/manager/nvm/index.js +++ b/lib/manager/nvm/index.js @@ -1,14 +1,14 @@ const { extractDependencies } = require('./extract'); const { getPackageUpdates } = require('./package'); -const { resolvePackageFile } = require('./resolve'); const { updateDependency } = require('./update'); const filePattern = new RegExp('^.nvmrc$'); +const parentManager = 'node'; module.exports = { extractDependencies, filePattern, getPackageUpdates, - resolvePackageFile, + parentManager, updateDependency, }; diff --git a/lib/manager/nvm/resolve.js b/lib/manager/nvm/resolve.js deleted file mode 100644 index f39498a03f6d7dc4a66cac37978bc33dd77050a3..0000000000000000000000000000000000000000 --- a/lib/manager/nvm/resolve.js +++ /dev/null @@ -1,19 +0,0 @@ -const { mergeChildConfig } = require('../../config'); - -module.exports = { - resolvePackageFile, -}; - -async function resolvePackageFile(config, inputFile) { - const nvmConfig = mergeChildConfig(config.node, config.nvm); - const packageFile = mergeChildConfig(nvmConfig, inputFile); - logger.debug( - `Resolving packageFile ${JSON.stringify(packageFile.packageFile)}` - ); - packageFile.content = await platform.getFile(packageFile.packageFile); - if (!packageFile.content) { - logger.debug('No packageFile content'); - return null; - } - return packageFile; -} diff --git a/lib/manager/travis/index.js b/lib/manager/travis/index.js index 243cfe117a6c97825a2a7308986d72b3ae7ba035..4feb1b8da0753e137dc1e8a131189120a143a3a2 100644 --- a/lib/manager/travis/index.js +++ b/lib/manager/travis/index.js @@ -1,16 +1,16 @@ const { extractDependencies } = require('./extract'); const { getPackageUpdates } = require('./package'); -const { resolvePackageFile } = require('./resolve'); const { updateDependency } = require('./update'); const filePattern = new RegExp('^.travis.yml$'); const contentPattern = new RegExp('(^|\\n)node_js:\\n'); +const parentManager = 'node'; module.exports = { contentPattern, extractDependencies, filePattern, getPackageUpdates, - resolvePackageFile, + parentManager, updateDependency, }; diff --git a/lib/manager/travis/resolve.js b/lib/manager/travis/resolve.js deleted file mode 100644 index 76901358626ebc8f71c0caa52531b1843a7739af..0000000000000000000000000000000000000000 --- a/lib/manager/travis/resolve.js +++ /dev/null @@ -1,19 +0,0 @@ -const { mergeChildConfig } = require('../../config'); - -module.exports = { - resolvePackageFile, -}; - -async function resolvePackageFile(config, inputFile) { - const travisConfig = mergeChildConfig(config.node, config.travis); - const packageFile = mergeChildConfig(travisConfig, inputFile); - logger.debug( - `Resolving packageFile ${JSON.stringify(packageFile.packageFile)}` - ); - packageFile.content = await platform.getFile(packageFile.packageFile); - if (!packageFile.content) { - logger.debug('No packageFile content'); - return null; - } - return packageFile; -}