From 5b3d7a9f86297ce35d3a68e3390e91f10c976a61 Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Fri, 30 Mar 2018 07:38:38 +0200 Subject: [PATCH] refactor: use common manager resolve function --- lib/manager/bazel/index.js | 2 -- lib/manager/bazel/resolve.js | 18 ------------------ lib/manager/circleci/index.js | 4 ++-- lib/manager/circleci/resolve.js | 19 ------------------- lib/manager/docker-compose/index.js | 2 ++ lib/manager/index.js | 28 ++++++++++++++++++++++------ lib/manager/meteor/index.js | 2 -- lib/manager/meteor/resolve.js | 18 ------------------ lib/manager/nvm/index.js | 4 ++-- lib/manager/nvm/resolve.js | 19 ------------------- lib/manager/travis/index.js | 4 ++-- lib/manager/travis/resolve.js | 19 ------------------- 12 files changed, 30 insertions(+), 109 deletions(-) delete mode 100644 lib/manager/bazel/resolve.js delete mode 100644 lib/manager/circleci/resolve.js delete mode 100644 lib/manager/meteor/resolve.js delete mode 100644 lib/manager/nvm/resolve.js delete mode 100644 lib/manager/travis/resolve.js diff --git a/lib/manager/bazel/index.js b/lib/manager/bazel/index.js index 2b8661f14c..9dff093317 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 95dbb2415e..0000000000 --- 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 12f9387763..068d2f113c 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 0e45b03da8..0000000000 --- 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 a496cca168..3f5ed7f32a 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 295c903747..3868e48f2f 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 fab391044a..8b13499f40 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 e44ae381f0..0000000000 --- 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 91e5d8175f..57f3860c91 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 f39498a03f..0000000000 --- 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 243cfe117a..4feb1b8da0 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 7690135862..0000000000 --- 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; -} -- GitLab