From 6530480410b740b64d5536e86f25948c4c4deac4 Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Sun, 4 Mar 2018 20:03:52 +0100 Subject: [PATCH] refactor: simplify detectPackageFiles --- lib/manager/bazel/detect.js | 19 ------------------- lib/manager/bazel/index.js | 6 +++--- lib/manager/docker/detect.js | 23 ----------------------- lib/manager/docker/index.js | 6 +++--- lib/manager/index.js | 15 +++++++++++++-- lib/manager/meteor/detect.js | 19 ------------------- lib/manager/meteor/index.js | 6 +++--- lib/manager/npm/index.js | 2 +- lib/manager/nvm/index.js | 2 +- lib/manager/travis/index.js | 2 +- test/manager/index.spec.js | 2 ++ 11 files changed, 27 insertions(+), 75 deletions(-) delete mode 100644 lib/manager/bazel/detect.js delete mode 100644 lib/manager/docker/detect.js delete mode 100644 lib/manager/meteor/detect.js diff --git a/lib/manager/bazel/detect.js b/lib/manager/bazel/detect.js deleted file mode 100644 index 5733855e23..0000000000 --- a/lib/manager/bazel/detect.js +++ /dev/null @@ -1,19 +0,0 @@ -module.exports = { - detectPackageFiles, -}; - -async function detectPackageFiles(config, fileList) { - logger.debug('bazel.detectPackageFiles()'); - const packageFiles = []; - if (config.bazel.enabled) { - for (const file of fileList) { - if (file === 'WORKSPACE' || file.endsWith('/WORKSPACE')) { - const content = await platform.getFile(file); - if (content && content.match(/(^|\n)git_repository\(/)) { - packageFiles.push(file); - } - } - } - } - return packageFiles; -} diff --git a/lib/manager/bazel/index.js b/lib/manager/bazel/index.js index 2781d0b590..dfab0a11b5 100644 --- a/lib/manager/bazel/index.js +++ b/lib/manager/bazel/index.js @@ -1,13 +1,13 @@ -const { detectPackageFiles } = require('./detect'); const { extractDependencies } = require('./extract'); const { getPackageUpdates } = require('./package'); const { resolvePackageFile } = require('./resolve'); const { setNewValue } = require('./update'); -const filePattern = '(^|/)WORKSPACE$'; +const filePattern = new RegExp('(^|/)WORKSPACE$'); +const contentPattern = new RegExp('(^|\\n)git_repository\\('); module.exports = { - detectPackageFiles, + contentPattern, extractDependencies, filePattern, getPackageUpdates, diff --git a/lib/manager/docker/detect.js b/lib/manager/docker/detect.js deleted file mode 100644 index c2c0bb3ba8..0000000000 --- a/lib/manager/docker/detect.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - detectPackageFiles, -}; - -async function detectPackageFiles(config, fileList) { - logger.debug('docker.detectPackageFiles()'); - const packageFiles = []; - if (config.docker.enabled) { - for (const file of fileList) { - if (file === 'Dockerfile' || file.endsWith('/Dockerfile')) { - const content = await platform.getFile(file); - if (content) { - if (content.match(/(^|\n)FROM .+\n/)) { - packageFiles.push(file); - } - } else { - logger.warn({ file }, 'No Dockerfile content'); - } - } - } - } - return packageFiles; -} diff --git a/lib/manager/docker/index.js b/lib/manager/docker/index.js index 897fa70065..e29d5de650 100644 --- a/lib/manager/docker/index.js +++ b/lib/manager/docker/index.js @@ -1,13 +1,13 @@ -const { detectPackageFiles } = require('./detect'); const { extractDependencies } = require('./extract'); const { getPackageUpdates } = require('./package'); const { resolvePackageFile } = require('./resolve'); const { setNewValue } = require('./update'); -const filePattern = '(^|/)Dockerfile$'; +const filePattern = new RegExp('(^|/)Dockerfile$'); +const contentPattern = new RegExp('(^|\\n)FROM .+\\n', 'i'); module.exports = { - detectPackageFiles, + contentPattern, extractDependencies, filePattern, getPackageUpdates, diff --git a/lib/manager/index.js b/lib/manager/index.js index 5e9cf01f95..b550b8bf9a 100644 --- a/lib/manager/index.js +++ b/lib/manager/index.js @@ -30,13 +30,24 @@ async function detectPackageFiles(config) { ); for (const manager of managerList) { logger.debug(`Detecting package files (${manager})`); - let files; + let files = []; if (managers[manager].detectPackageFiles) { files = await managers[manager].detectPackageFiles(config, fileList); } else { - files = fileList.filter(file => + const allfiles = fileList.filter(file => file.match(managers[manager].filePattern) ); + for (const file of allfiles) { + const { contentPattern } = managers[manager]; + if (contentPattern) { + const content = await platform.getFile(file); + if (content && content.match(contentPattern)) { + files.push(file); + } + } else { + files.push(file); + } + } } if (files.length) { logger.info({ manager, files }, `Detected package files`); diff --git a/lib/manager/meteor/detect.js b/lib/manager/meteor/detect.js deleted file mode 100644 index 079753a5f0..0000000000 --- a/lib/manager/meteor/detect.js +++ /dev/null @@ -1,19 +0,0 @@ -module.exports = { - detectPackageFiles, -}; - -async function detectPackageFiles(config, fileList) { - logger.debug('meteor.detectPackageFiles()'); - const packageFiles = []; - if (config.meteor.enabled) { - for (const file of fileList) { - if (file === 'package.js' || file.endsWith('/package.js')) { - const content = await platform.getFile(file); - if (content && content.replace(/\s/g, '').includes('Npm.depends({')) { - packageFiles.push(file); - } - } - } - } - return packageFiles; -} diff --git a/lib/manager/meteor/index.js b/lib/manager/meteor/index.js index 4b403b1384..ef29e697ce 100644 --- a/lib/manager/meteor/index.js +++ b/lib/manager/meteor/index.js @@ -1,13 +1,13 @@ -const { detectPackageFiles } = require('./detect'); const { extractDependencies } = require('./extract'); const { getPackageUpdates } = require('../npm/package'); const { resolvePackageFile } = require('./resolve'); const { setNewValue } = require('./update'); -const filePattern = '(^|/)package.js$'; +const filePattern = new RegExp('(^|/)package.js$'); +const contentPattern = new RegExp('(^|\\n)\\s*Npm.depends\\(\\s*{'); module.exports = { - detectPackageFiles, + contentPattern, extractDependencies, filePattern, getPackageUpdates, diff --git a/lib/manager/npm/index.js b/lib/manager/npm/index.js index 2b9cb0953a..58f7fe187f 100644 --- a/lib/manager/npm/index.js +++ b/lib/manager/npm/index.js @@ -4,7 +4,7 @@ const { getPackageUpdates } = require('./package'); const { resolvePackageFile } = require('./resolve'); const { setNewValue } = require('./update'); -const filePattern = '(^|/)package.json$'; +const filePattern = new RegExp('(^|/)package.json$'); module.exports = { detectPackageFiles, diff --git a/lib/manager/nvm/index.js b/lib/manager/nvm/index.js index 1994de8761..3e0c887284 100644 --- a/lib/manager/nvm/index.js +++ b/lib/manager/nvm/index.js @@ -3,7 +3,7 @@ const { getPackageUpdates } = require('./package'); const { resolvePackageFile } = require('./resolve'); const { setNewValue } = require('./update'); -const filePattern = '^.nvmrc$'; +const filePattern = new RegExp('^.nvmrc$'); module.exports = { extractDependencies, diff --git a/lib/manager/travis/index.js b/lib/manager/travis/index.js index 7149d5974d..d3e12e07bf 100644 --- a/lib/manager/travis/index.js +++ b/lib/manager/travis/index.js @@ -3,7 +3,7 @@ const { getPackageUpdates } = require('./package'); const { resolvePackageFile } = require('./resolve'); const { setNewValue } = require('./update'); -const filePattern = '^.travis.yml$'; +const filePattern = new RegExp('^.travis.yml$'); module.exports = { extractDependencies, diff --git a/test/manager/index.spec.js b/test/manager/index.spec.js index 8636d25396..03651df944 100644 --- a/test/manager/index.spec.js +++ b/test/manager/index.spec.js @@ -90,6 +90,7 @@ describe('manager', () => { platform.getFileList.mockReturnValueOnce([ 'WORKSPACE', 'other/WORKSPACE', + 'empty/WORKSPACE', ]); platform.getFile.mockReturnValueOnce('\n\ngit_repository(\n\n)\n'); platform.getFile.mockReturnValueOnce( @@ -98,6 +99,7 @@ describe('manager', () => { 'utf8' ) ); + platform.getFile.mockReturnValueOnce('foo'); const res = await manager.detectPackageFiles(config); expect(res).toMatchSnapshot(); expect(res).toHaveLength(2); -- GitLab