diff --git a/lib/manager/index.js b/lib/manager/index.js index e2e8726cec46c3dce3975a2dd2115890cf4c51e1..e72fa0759114ee43939f8ec2211197cbdde55263 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 0b7ba38d1feb641c193df910fc796253a21cad41..750c89ef432e990c74d24cf5fc9e9e9de3dc0b17 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 0effeb54b94d4782bd3f28a21ec5a665f9b0d2f3..5c23fd0e540707bcf5249a2d0fa98309cc83206f 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 44e9a97a5cfa66c4f5cd27ae738676eb071aa777..0e40534f506a2866deae275147448d899030e77f 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 fe252b69188dc6f9844b218dc38a72115230dff9..ae50573a3fa8039fbf74294d43f4c02508cf430d 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 af13e97ef0611784788fdcd2d2c9fe03c1be4243..94e5b3cf326f807936c4268cfe21b1129ca4eaf1 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 47f1abc533857a884446c5436235e50301dc19fd..a4ab7bf3968d20006ae68c8a37dd0ad2a88c5b27 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([