From cf336a0b21240aaa68e4b0ba661b09f603d8af72 Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Wed, 28 Feb 2018 19:01:35 +0100 Subject: [PATCH] refactor: use manager not packageFile --- lib/manager/index.js | 22 ++++++++++--------- lib/workers/dep-type/index.js | 11 +++++----- lib/workers/repository/updates/determine.js | 11 +++++----- test/manager/index.spec.js | 12 +++++----- test/workers/dep-type/index.spec.js | 13 ++++++----- test/workers/package/index.spec.js | 10 ++++----- .../repository/updates/determine.spec.js | 5 +++++ 7 files changed, 47 insertions(+), 37 deletions(-) diff --git a/lib/manager/index.js b/lib/manager/index.js index e2e8726cec..e72fa07591 100644 --- a/lib/manager/index.js +++ b/lib/manager/index.js @@ -62,15 +62,16 @@ async function detectPackageFiles(config) { } function getPackageUpdates(config) { - if (config.packageFile.endsWith('Dockerfile')) { + const { manager } = config; + if (manager === 'docker') { return docker.getPackageUpdates(config); - } else if (config.packageFile.endsWith('package.json')) { + } else if (manager === 'npm') { return npm.getPackageUpdates(config); - } else if (config.packageFile.endsWith('package.js')) { + } else if (manager === 'meteor') { return npm.getPackageUpdates(config); - } else if (config.packageFile.endsWith('.travis.yml')) { + } else if (manager === 'node') { return node.getPackageUpdates(config); - } else if (config.packageFile.endsWith('WORKSPACE')) { + } else if (manager === 'bazel') { return bazel.getPackageUpdates(config); } logger.info(`Cannot find manager for ${config.packageFile}`); @@ -81,12 +82,13 @@ async function getUpdatedPackageFiles(config) { const updatedPackageFiles = {}; for (const upgrade of config.upgrades) { + const { manager } = upgrade; if (upgrade.type !== 'lockFileMaintenance') { const existingContent = updatedPackageFiles[upgrade.packageFile] || (await platform.getFile(upgrade.packageFile, config.parentBranch)); let newContent = existingContent; - if (upgrade.packageFile.endsWith('package.json')) { + if (manager === 'npm') { newContent = npmUpdater.setNewValue( existingContent, upgrade.depType, @@ -98,18 +100,18 @@ async function getUpdatedPackageFiles(config) { upgrade.currentPackageJsonVersion, upgrade.bumpVersion ); - } else if (upgrade.packageFile.endsWith('package.js')) { + } else if (manager === 'meteor') { newContent = meteorUpdater.setNewValue( existingContent, upgrade.depName, upgrade.currentVersion, upgrade.newVersion ); - } else if (upgrade.packageFile.endsWith('Dockerfile')) { + } else if (manager === 'docker') { newContent = dockerfileHelper.setNewValue(existingContent, upgrade); - } else if (upgrade.packageFile.endsWith('.travis.yml')) { + } else if (manager === 'node') { newContent = nodeHelper.setNewValue(existingContent, upgrade); - } else if (upgrade.packageFile.endsWith('WORKSPACE')) { + } else if (manager === 'bazel') { newContent = await bazelHelper.setNewValue(existingContent, upgrade); } if (!newContent) { diff --git a/lib/workers/dep-type/index.js b/lib/workers/dep-type/index.js index 0b7ba38d1f..750c89ef43 100644 --- a/lib/workers/dep-type/index.js +++ b/lib/workers/dep-type/index.js @@ -28,7 +28,8 @@ async function renovateDepType( return []; } let deps = []; - if (config.packageFile.endsWith('package.json')) { + const { manager } = config; + if (manager === 'npm') { // Extract all dependencies from the package.json deps = await packageJson.extractDependencies( packageContent, @@ -43,13 +44,13 @@ async function renovateDepType( } logger.debug(`deps length is ${deps.length}`); logger.debug({ deps }, `deps`); - } else if (config.packageFile.endsWith('package.js')) { + } else if (manager === 'meteor') { deps = meteorExtract.extractDependencies(packageContent); - } else if (config.packageFile.endsWith('Dockerfile')) { + } else if (manager === 'docker') { deps = dockerExtract.extractDependencies(packageContent); - } else if (config.packageFile.endsWith('.travis.yml')) { + } else if (manager === 'node') { deps = nodeExtract.extractDependencies(packageContent); - } else if (config.packageFile.endsWith('WORKSPACE')) { + } else if (manager === 'bazel') { deps = bazelExtract.extractDependencies(packageContent); } deps = deps.filter( diff --git a/lib/workers/repository/updates/determine.js b/lib/workers/repository/updates/determine.js index 0effeb54b9..5c23fd0e54 100644 --- a/lib/workers/repository/updates/determine.js +++ b/lib/workers/repository/updates/determine.js @@ -17,7 +17,8 @@ async function determineRepoUpgrades(config) { logger.trace({ fullPackageFile: packageFile }); let packageFileConfig = mergeChildConfig(config, packageFile); packageFileConfig = filterConfig(packageFileConfig, 'packageFile'); - if (packageFileConfig.packageFile.endsWith('package.json')) { + const { manager } = packageFileConfig; + if (manager === 'npm') { logger.info( { packageFile: packageFileConfig.packageFile }, 'Renovating package.json dependencies' @@ -25,22 +26,22 @@ async function determineRepoUpgrades(config) { upgrades = upgrades.concat( await packageFileWorker.renovatePackageFile(packageFileConfig) ); - } else if (packageFileConfig.packageFile.endsWith('package.js')) { + } else if (manager === 'meteor') { logger.info('Renovating package.js (meteor) dependencies'); upgrades = upgrades.concat( await packageFileWorker.renovateMeteorPackageFile(packageFileConfig) ); - } else if (packageFileConfig.packageFile.endsWith('Dockerfile')) { + } else if (manager === 'docker') { logger.info('Renovating Dockerfile FROM'); upgrades = upgrades.concat( await packageFileWorker.renovateDockerfile(packageFileConfig) ); - } else if (packageFileConfig.packageFile.endsWith('.travis.yml')) { + } else if (manager === 'node') { logger.info('Renovating .travis.yml node_js versions'); upgrades = upgrades.concat( await packageFileWorker.renovateNodeFile(packageFileConfig) ); - } else if (packageFileConfig.packageFile.endsWith('WORKSPACE')) { + } else if (manager === 'bazel') { logger.info('Renovating bazel WORKSPACE dependencies'); upgrades = upgrades.concat( await packageFileWorker.renovateBazelFile(packageFileConfig) diff --git a/test/manager/index.spec.js b/test/manager/index.spec.js index 44e9a97a5c..0e40534f50 100644 --- a/test/manager/index.spec.js +++ b/test/manager/index.spec.js @@ -134,7 +134,7 @@ describe('manager', () => { it('recurses if setNewValue error', async () => { config.parentBranch = 'some-branch'; config.canRebase = true; - config.upgrades = [{ packageFile: 'package.json' }]; + config.upgrades = [{ packageFile: 'package.json', manager: 'npm' }]; npmUpdater.setNewValue.mockReturnValueOnce(null); npmUpdater.setNewValue.mockReturnValueOnce('some content'); const res = await getUpdatedPackageFiles(config); @@ -154,11 +154,11 @@ describe('manager', () => { config.parentBranch = 'some-branch'; config.canRebase = true; config.upgrades = [ - { packageFile: 'package.json' }, - { packageFile: 'Dockerfile' }, - { packageFile: 'packages/foo/package.js' }, - { packageFile: '.travis.yml' }, - { packageFile: 'WORKSPACE' }, + { packageFile: 'package.json', manager: 'npm' }, + { packageFile: 'Dockerfile', manager: 'docker' }, + { packageFile: 'packages/foo/package.js', manager: 'meteor' }, + { packageFile: '.travis.yml', manager: 'node' }, + { packageFile: 'WORKSPACE', manager: 'bazel' }, ]; platform.getFile.mockReturnValueOnce('old content 1'); platform.getFile.mockReturnValueOnce('old content 1'); diff --git a/test/workers/dep-type/index.spec.js b/test/workers/dep-type/index.spec.js index fe252b6918..ae50573a3f 100644 --- a/test/workers/dep-type/index.spec.js +++ b/test/workers/dep-type/index.spec.js @@ -15,6 +15,7 @@ describe('lib/workers/dep-type/index', () => { beforeEach(() => { config = { packageFile: 'package.json', + manager: 'npm', ignoreDeps: ['a', 'b'], monorepoPackages: ['e'], workspaceDir: '.', @@ -49,7 +50,7 @@ describe('lib/workers/dep-type/index', () => { expect(res).toHaveLength(2); }); it('returns upgrades for meteor', async () => { - config.packageFile = 'package.js'; + config.manager = 'meteor'; const content = fs.readFileSync( path.resolve('test/_fixtures/meteor/package-1.js'), 'utf8' @@ -58,7 +59,7 @@ describe('lib/workers/dep-type/index', () => { expect(res).toHaveLength(6); }); it('returns upgrades for bazel', async () => { - config.packageFile = 'WORKSPACE'; + config.manager = 'bazel'; const content = fs.readFileSync( path.resolve('test/_fixtures/bazel/WORKSPACE1'), 'utf8' @@ -67,7 +68,7 @@ describe('lib/workers/dep-type/index', () => { expect(res).toHaveLength(4); }); it('returns upgrades for travis', async () => { - config.packageFile = '.travis.yml'; + config.manager = 'node'; const content = fs.readFileSync( path.resolve('test/_fixtures/node/travis.yml'), 'utf8' @@ -76,13 +77,13 @@ describe('lib/workers/dep-type/index', () => { expect(res).toHaveLength(1); }); it('handles malformed meteor', async () => { - config.packageFile = 'package.js'; + config.manager = 'meteor'; const content = 'blah'; const res = await depTypeWorker.renovateDepType(content, config); expect(res).toHaveLength(0); }); it('returns upgrades for docker', async () => { - config.packageFile = 'Dockerfile'; + config.manager = 'docker'; config.currentFrom = 'node'; const res = await depTypeWorker.renovateDepType( '# a comment\nFROM something\n', @@ -91,7 +92,7 @@ describe('lib/workers/dep-type/index', () => { expect(res).toHaveLength(1); }); it('ignores Dockerfiles with no FROM', async () => { - config.packageFile = 'Dockerfile'; + config.manager = 'docker'; config.currentFrom = 'node'; const res = await depTypeWorker.renovateDepType( '# a comment\nRUN something\n', diff --git a/test/workers/package/index.spec.js b/test/workers/package/index.spec.js index af13e97ef0..94e5b3cf32 100644 --- a/test/workers/package/index.spec.js +++ b/test/workers/package/index.spec.js @@ -27,30 +27,30 @@ describe('lib/workers/package/index', () => { }); it('calls docker', async () => { docker.getPackageUpdates.mockReturnValueOnce([]); - config.packageFile = 'Dockerfile'; + config.manager = 'docker'; const res = await pkgWorker.renovatePackage(config); expect(res).toMatchObject([]); }); it('calls meteor', async () => { npm.getPackageUpdates.mockReturnValueOnce([]); - config.packageFile = 'package.js'; + config.manager = 'meteor'; const res = await pkgWorker.renovatePackage(config); expect(res).toMatchObject([]); }); it('calls node', async () => { node.getPackageUpdates.mockReturnValueOnce([]); - config.packageFile = '.travis.yml'; + config.manager = 'node'; const res = await pkgWorker.renovatePackage(config); expect(res).toMatchObject([]); }); it('calls bazel', async () => { bazel.getPackageUpdates.mockReturnValueOnce([]); - config.packageFile = 'WORKSPACE'; + config.manager = 'bazel'; const res = await pkgWorker.renovatePackage(config); expect(res).toMatchObject([]); }); it('maps and filters type', async () => { - config.packageFile = 'package.json'; + config.manager = 'npm'; config.major.enabled = false; npm.getPackageUpdates.mockReturnValueOnce([ { type: 'pin' }, diff --git a/test/workers/repository/updates/determine.spec.js b/test/workers/repository/updates/determine.spec.js index 47f1abc533..a4ab7bf396 100644 --- a/test/workers/repository/updates/determine.spec.js +++ b/test/workers/repository/updates/determine.spec.js @@ -31,18 +31,23 @@ describe('workers/repository/updates/determine', () => { config.packageFiles = [ { packageFile: 'Dockerfile', + manager: 'docker', }, { packageFile: 'backend/package.json', + manager: 'npm', }, { packageFile: 'frontend/package.js', + manager: 'meteor', }, { packageFile: '.travis.yml', + manager: 'node', }, { packageFile: 'WORKSPACE', + manager: 'bazel', }, ]; packageFileWorker.renovateDockerfile.mockReturnValueOnce([ -- GitLab