diff --git a/lib/manager/ansible/update.spec.ts b/lib/manager/ansible/update.spec.ts index a03c1cf416c34420c24cbfd374cd10640c51ce3f..8299bbf6fa1296e307371f2f59894366a1815dbe 100644 --- a/lib/manager/ansible/update.spec.ts +++ b/lib/manager/ansible/update.spec.ts @@ -19,7 +19,7 @@ describe('manager/ansible/update', () => { newValue: '1.29.3', newDigest: 'sha256:abcdefghijklmnop', }; - const res = updateDependency(yamlFile1, upgrade); + const res = updateDependency({ fileContent: yamlFile1, upgrade }); expect(res).not.toEqual(yamlFile1); expect(res.includes(upgrade.newDigest)).toBe(true); }); @@ -30,7 +30,7 @@ describe('manager/ansible/update', () => { newValue: '11.5.1', newDigest: 'sha256:abcdefghijklmnop', }; - const res = updateDependency(yamlFile2, upgrade); + const res = updateDependency({ fileContent: yamlFile2, upgrade }); expect(res).not.toEqual(yamlFile2); expect(res.includes(upgrade.newDigest)).toBe(true); }); @@ -40,7 +40,7 @@ describe('manager/ansible/update', () => { depName: 'sameersbn/redis', newValue: '4.0.9-1', }; - const res = updateDependency(yamlFile2, upgrade); + const res = updateDependency({ fileContent: yamlFile2, upgrade }); expect(res).toEqual(yamlFile2); }); it('returns null if mismatch', () => { @@ -48,11 +48,11 @@ describe('manager/ansible/update', () => { managerData: { lineNumber: 52 }, newFrom: 'registry:2.6.2@sha256:abcdefghijklmnop', }; - const res = updateDependency(yamlFile2, upgrade); + const res = updateDependency({ fileContent: yamlFile2, upgrade }); expect(res).toBeNull(); }); it('returns null if error', () => { - const res = updateDependency(null, null); + const res = updateDependency({ fileContent: null, upgrade: null }); expect(res).toBeNull(); }); }); diff --git a/lib/manager/ansible/update.ts b/lib/manager/ansible/update.ts index 7e4e272673392937e77e80ade8a55b76d463397e..a59259155944ee5bc382c8982b9939ec09db84ae 100644 --- a/lib/manager/ansible/update.ts +++ b/lib/manager/ansible/update.ts @@ -1,12 +1,12 @@ import { logger } from '../../logger'; import { getNewFrom } from '../dockerfile/update'; -import { Upgrade } from '../common'; +import { UpdateDependencyConfig } from '../common'; import { regEx } from '../../util/regex'; -export default function updateDependency( - fileContent: string, - upgrade: Upgrade -): string | null { +export default function updateDependency({ + fileContent, + upgrade, +}: UpdateDependencyConfig): string | null { try { const newFrom = getNewFrom(upgrade); logger.debug(`ansible.updateDependency(): ${newFrom}`); diff --git a/lib/manager/bazel/update.spec.ts b/lib/manager/bazel/update.spec.ts index 400c43eb4b21414f8594e563573a47522a35b595..5265692a25ec5fac9bcce0d6fc229c34cc08c645 100644 --- a/lib/manager/bazel/update.spec.ts +++ b/lib/manager/bazel/update.spec.ts @@ -46,7 +46,10 @@ describe('manager/bazel/update', () => { currentValue: '0.1.8', newValue: '0.2.0', }; - const res = await updateDependency(content, upgrade); + const res = await updateDependency({ + fileContent: content, + upgrade, + }); expect(res).not.toEqual(content); }); @@ -71,7 +74,10 @@ describe('manager/bazel/update', () => { 'sha256:2c29ba015faef92a3f55b37632fc373a7fbc2c9fddd31e317bf07113391c640b', newValue: 'v1.0.0-alpha42.cli-migrations', }; - const res = await updateDependency(contentContainerPull, upgrade); + const res = await updateDependency({ + fileContent: contentContainerPull, + upgrade, + }); expect(res).toMatchSnapshot(); expect(res).not.toEqual(contentContainerPull); expect(res.includes('# v1.0.0-alpha31.cli-migrations 11/28')).toBe(true); @@ -95,7 +101,10 @@ describe('manager/bazel/update', () => { newValue: 'v1.0.3', updateType: 'major', }; - const res = await updateDependency(content, upgrade); + const res = await updateDependency({ + fileContent: content, + upgrade, + }); expect(res).toMatchSnapshot(); expect(res).not.toEqual(content); expect( @@ -113,7 +122,10 @@ describe('manager/bazel/update', () => { newDigest: '033387ac8853e6cc1cd47df6c346bc53cbc490d8', }; fromStream.mockResolvedValueOnce('abc123'); - const res = await updateDependency(content, upgrade); + const res = await updateDependency({ + fileContent: content, + upgrade, + }); expect(res).not.toEqual(content); }); it('updates http archive with content other then WORKSPACE', async () => { @@ -133,7 +145,10 @@ describe('manager/bazel/update', () => { newValue: '0.8.0', }; fromStream.mockResolvedValueOnce('abc123'); - const res = await updateDependency(fileWithBzlExtension, upgrade); + const res = await updateDependency({ + fileContent: content, + upgrade, + }); expect(res).not.toEqual(fileWithBzlExtension); expect(res.indexOf('0.8.0')).not.toBe(-1); }); @@ -154,7 +169,10 @@ describe('manager/bazel/update', () => { newValue: '0.8.0', }; fromStream.mockResolvedValueOnce('abc123'); - const res = await updateDependency(fileWithBzlExtension, upgrade); + const res = await updateDependency({ + fileContent: content, + upgrade, + }); expect(res).not.toEqual(fileWithBzlExtension); expect(res.indexOf('0.8.0')).not.toBe(-1); }); @@ -174,7 +192,10 @@ describe('manager/bazel/update', () => { currentValue: '0.6.0', newValue: '0.8.0', }; - const res = await updateDependency(fileWithBzlExtension, upgrade); + const res = await updateDependency({ + fileContent: content, + upgrade, + }); expect(res).toBeNull(); }); it('errors for http_archive without urls', async () => { @@ -196,7 +217,10 @@ http_archive( newValue: '0.6.2', }; fromStream.mockResolvedValueOnce('abc123'); - const res = await updateDependency(content, upgrade); + const res = await updateDependency({ + fileContent: content, + upgrade, + }); expect(res).toBeNull(); }); it('updates http_archive with urls array', async () => { @@ -222,7 +246,10 @@ http_archive( newValue: '0.6.2', }; fromStream.mockResolvedValueOnce('abc123'); - const res = await updateDependency(content, upgrade); + const res = await updateDependency({ + fileContent: content, + upgrade, + }); expect(res).not.toEqual(content); expect(res.indexOf('0.5.0')).toBe(-1); expect(res.indexOf('0.6.2')).not.toBe(-1); diff --git a/lib/manager/bazel/update.ts b/lib/manager/bazel/update.ts index 4dcc1c1d8461e51ba2d948f9e6117e7665a9f031..b0413facb0a759bd623c0697b675ba2fe9dd834f 100644 --- a/lib/manager/bazel/update.ts +++ b/lib/manager/bazel/update.ts @@ -1,7 +1,7 @@ import { fromStream } from 'hasha'; import got from '../../util/got'; import { logger } from '../../logger'; -import { Upgrade } from '../common'; +import { UpdateDependencyConfig } from '../common'; import { regEx } from '../../util/regex'; function updateWithNewVersion( @@ -81,10 +81,10 @@ function setNewHash(content: string, hash: string): string { return content.replace(/(sha256\s*=\s*)"[^"]+"/, `$1"${hash}"`); } -export async function updateDependency( - fileContent: string, - upgrade: Upgrade -): Promise<string | null> { +export async function updateDependency({ + fileContent, + upgrade, +}: UpdateDependencyConfig): Promise<string | null> { try { logger.debug( `bazel.updateDependency(): ${upgrade.newValue || upgrade.newDigest}` diff --git a/lib/manager/buildkite/update.spec.ts b/lib/manager/buildkite/update.spec.ts index 6c6c2ec2d850b43406ab9d0047e050a179918e7a..b9733f7051d879c5862ebeff2f260e11c1b515ce 100644 --- a/lib/manager/buildkite/update.spec.ts +++ b/lib/manager/buildkite/update.spec.ts @@ -21,7 +21,7 @@ describe('manager/buildkite/update', () => { managerData: { lineNumber: 3 }, newValue: 'v2.2.0', }; - const res = updateDependency(pipeline1, upgrade); + const res = updateDependency({ fileContent: pipeline1, upgrade }); expect(res).not.toEqual(pipeline1); expect(res.includes(upgrade.newValue)).toBe(true); }); @@ -30,7 +30,7 @@ describe('manager/buildkite/update', () => { managerData: { lineNumber: 11 }, newValue: 'v2.2.0', }; - const res = updateDependency(pipeline4, upgrade); + const res = updateDependency({ fileContent: pipeline4, upgrade }); expect(res).not.toEqual(pipeline4); expect(res.includes(upgrade.newValue)).toBe(true); }); @@ -39,14 +39,20 @@ describe('manager/buildkite/update', () => { managerData: { lineNumber: 5 }, newValue: 'v1.5.0', }; - const res1 = updateDependency(pipeline2, upgrade1); + const res1 = updateDependency({ + fileContent: pipeline2, + upgrade: upgrade1, + }); expect(res1).not.toEqual(pipeline2); expect(res1.includes(upgrade1.newValue)).toBe(true); const upgrade2 = { managerData: { lineNumber: 16 }, newValue: 'v1.5.0', }; - const res2 = updateDependency(res1, upgrade2); + const res2 = updateDependency({ + fileContent: res1, + upgrade: upgrade2, + }); expect(res2).not.toEqual(res1); expect(res2).toMatchSnapshot(); }); @@ -55,7 +61,10 @@ describe('manager/buildkite/update', () => { managerData: { lineNumber: 3 }, newValue: 'v2.0.0', }; - const res = updateDependency(pipeline1, upgrade); + const res = updateDependency({ + fileContent: pipeline1, + upgrade, + }); expect(res).toEqual(pipeline1); }); it('returns null if mismatch', () => { @@ -63,11 +72,14 @@ describe('manager/buildkite/update', () => { managerData: { lineNumber: 4 }, newValue: 'v2.2.0', }; - const res = updateDependency(pipeline1, upgrade); + const res = updateDependency({ + fileContent: pipeline1, + upgrade, + }); expect(res).toBeNull(); }); it('returns null if error', () => { - const res = updateDependency(null, null); + const res = updateDependency({ fileContent: null, upgrade: null }); expect(res).toBeNull(); }); }); diff --git a/lib/manager/buildkite/update.ts b/lib/manager/buildkite/update.ts index e400dd15a927eeabe312c30be5377d4ab79b33b5..2f39257e9c33d8b56f3001ab05e0075b1420f9a2 100644 --- a/lib/manager/buildkite/update.ts +++ b/lib/manager/buildkite/update.ts @@ -1,15 +1,15 @@ import { logger } from '../../logger'; -import { Upgrade } from '../common'; +import { UpdateDependencyConfig } from '../common'; import { regEx } from '../../util/regex'; -export function updateDependency( - currentFileContent: string, - upgrade: Upgrade -): string | null { +export function updateDependency({ + fileContent, + upgrade, +}: UpdateDependencyConfig): string | null { try { const lineIdx = upgrade.managerData.lineNumber - 1; logger.debug(`buildkite.updateDependency: ${upgrade.newValue}`); - const lines = currentFileContent.split('\n'); + const lines = fileContent.split('\n'); const lineToChange = lines[lineIdx]; const depLine = regEx(`^(\\s+[^#]+#)[^:]+(.*)$`); if (!depLine.test(lineToChange)) { @@ -19,7 +19,7 @@ export function updateDependency( const newLine = lineToChange.replace(depLine, `$1${upgrade.newValue}$2`); if (newLine === lineToChange) { logger.debug('No changes necessary'); - return currentFileContent; + return fileContent; } lines[lineIdx] = newLine; return lines.join('\n'); diff --git a/lib/manager/bundler/update.spec.ts b/lib/manager/bundler/update.spec.ts index 045487bb28a17652d0878bbfc398737403f5b311..962827e6ea2143d0da3ac5e0a589cfd5f1deffdb 100644 --- a/lib/manager/bundler/update.spec.ts +++ b/lib/manager/bundler/update.spec.ts @@ -15,7 +15,10 @@ describe('manager/docker-compose/update', () => { depName: 'rack-cache', newValue: '~> 1.3', }; - const res = updateDependency(railsGemfile, upgrade); + const res = updateDependency({ + fileContent: railsGemfile, + upgrade, + }); expect(res).not.toEqual(railsGemfile); expect(res.includes(upgrade.newValue)).toBe(true); }); @@ -26,7 +29,10 @@ describe('manager/docker-compose/update', () => { depName: 'rack-cache', newValue: '~> 1.2', }; - const res = updateDependency(railsGemfile, upgrade); + const res = updateDependency({ + fileContent: railsGemfile, + upgrade, + }); expect(res).toEqual(railsGemfile); }); it('returns null if mismatch', () => { @@ -36,7 +42,10 @@ describe('manager/docker-compose/update', () => { depName: 'wrong', newValue: '~> 1.3', }; - const res = updateDependency(railsGemfile, upgrade); + const res = updateDependency({ + fileContent: railsGemfile, + upgrade, + }); expect(res).toBeNull(); }); it('uses single quotes', () => { @@ -46,11 +55,11 @@ describe('manager/docker-compose/update', () => { newValue: '~> 1.3', }; const gemFile = `gem 'rack-cache', '~> 1.2'`; - const res = updateDependency(gemFile, upgrade); + const res = updateDependency({ fileContent: gemFile, upgrade }); expect(res).toEqual(`gem 'rack-cache', '~> 1.3'`); }); it('returns null if error', () => { - const res = updateDependency(null, null); + const res = updateDependency({ fileContent: null, upgrade: null }); expect(res).toBeNull(); }); }); diff --git a/lib/manager/bundler/update.ts b/lib/manager/bundler/update.ts index eb6784a3208dac402bd914f3a47ab5c8dad3f572..84ebe05c358577293732b05cd6a2574846de979b 100644 --- a/lib/manager/bundler/update.ts +++ b/lib/manager/bundler/update.ts @@ -1,5 +1,5 @@ import { logger } from '../../logger'; -import { Upgrade } from '../common'; +import { UpdateDependencyConfig } from '../common'; /* * The updateDependency() function is mandatory, and is used for updating one dependency at a time. @@ -7,17 +7,14 @@ import { Upgrade } from '../common'; * or with new content if changes are necessary. */ -export function updateDependency( - currentFileContent: string, - upgrade: Upgrade -): string | null { +export function updateDependency({ + fileContent, + upgrade, +}: UpdateDependencyConfig): string | null { try { const delimiter = - currentFileContent.split('"').length > - currentFileContent.split("'").length - ? '"' - : "'"; - const lines = currentFileContent.split('\n'); + fileContent.split('"').length > fileContent.split("'").length ? '"' : "'"; + const lines = fileContent.split('\n'); const lineToChange = lines[upgrade.managerData.lineNumber]; if (!lineToChange.includes(upgrade.depName)) { logger.debug('No gem match on line'); @@ -35,7 +32,7 @@ export function updateDependency( ); if (newLine === lineToChange) { logger.debug('No changes necessary'); - return currentFileContent; + return fileContent; } lines[upgrade.managerData.lineNumber] = newLine; return lines.join('\n'); diff --git a/lib/manager/cargo/update.spec.ts b/lib/manager/cargo/update.spec.ts index 1cbb15280e2d97eb4120f0d5ff3311425298bf4d..e4e52a4d7d181d631451e6445ec92600f9a1500f 100644 --- a/lib/manager/cargo/update.spec.ts +++ b/lib/manager/cargo/update.spec.ts @@ -22,27 +22,39 @@ describe('lib/manager/cargo/update', () => { }); it('returns same for invalid toml', () => { const cargotoml = 'invalid toml !#$#'; - expect(updateDependency(cargotoml, config)).toEqual(cargotoml); + expect( + updateDependency({ fileContent: cargotoml, upgrade: config }) + ).toEqual(cargotoml); }); it('returns same for null upgrade', () => { const cargotoml = '[dependencies]\n'; - expect(updateDependency(cargotoml, null)).toEqual(cargotoml); + expect( + updateDependency({ fileContent: cargotoml, upgrade: null }) + ).toEqual(cargotoml); }); it('returns same if version has not changed', () => { const cargotoml = '[dependencies]\n'; - expect(updateDependency(cargotoml, null)).toEqual(cargotoml); + expect( + updateDependency({ fileContent: cargotoml, upgrade: null }) + ).toEqual(cargotoml); const upgrade = { depName: 'libc', depType: 'dependencies', managerData: { nestedVersion: false }, newValue: '=0.2.43', }; - expect(updateDependency(cargo1toml, upgrade)).not.toBeNull(); - expect(updateDependency(cargo1toml, upgrade)).toBe(cargo1toml); + expect( + updateDependency({ fileContent: cargo1toml, upgrade }) + ).not.toBeNull(); + expect(updateDependency({ fileContent: cargo1toml, upgrade })).toBe( + cargo1toml + ); }); it('returns same for invalid target', () => { const cargotoml = '[dependencies]\n'; - expect(updateDependency(cargotoml, null)).toEqual(cargotoml); + expect( + updateDependency({ fileContent: cargotoml, upgrade: null }) + ).toEqual(cargotoml); const upgrade = { depName: 'platform-specific-dep', depType: 'dependencies', @@ -50,32 +62,48 @@ describe('lib/manager/cargo/update', () => { target: 'foobar', newValue: '1.2.3', }; - expect(updateDependency(cargo1toml, upgrade)).not.toBeNull(); - expect(updateDependency(cargo1toml, upgrade)).toBe(cargo1toml); + expect( + updateDependency({ fileContent: cargo1toml, upgrade }) + ).not.toBeNull(); + expect(updateDependency({ fileContent: cargo1toml, upgrade })).toBe( + cargo1toml + ); }); it('returns same for invalid depType', () => { const cargotoml = '[dependencies]\n'; - expect(updateDependency(cargotoml, null)).toEqual(cargotoml); + expect( + updateDependency({ fileContent: cargotoml, upgrade: null }) + ).toEqual(cargotoml); const upgrade = { depName: 'libc', depType: 'foobar', managerData: { nestedVersion: false }, newValue: '1.2.3', }; - expect(updateDependency(cargo1toml, upgrade)).not.toBeNull(); - expect(updateDependency(cargo1toml, upgrade)).toBe(cargo1toml); + expect( + updateDependency({ fileContent: cargo1toml, upgrade }) + ).not.toBeNull(); + expect(updateDependency({ fileContent: cargo1toml, upgrade })).toBe( + cargo1toml + ); }); it('returns same for invalid depName', () => { const cargotoml = '[dependencies]\n'; - expect(updateDependency(cargotoml, null)).toEqual(cargotoml); + expect( + updateDependency({ fileContent: cargotoml, upgrade: null }) + ).toEqual(cargotoml); const upgrade = { depName: 'does not exist', depType: 'dependencies', managerData: { nestedVersion: false }, newValue: '1.2.3', }; - expect(updateDependency(cargo1toml, upgrade)).not.toBeNull(); - expect(updateDependency(cargo1toml, upgrade)).toBe(cargo1toml); + expect( + updateDependency({ fileContent: cargo1toml, upgrade }) + ).not.toBeNull(); + expect(updateDependency({ fileContent: cargo1toml, upgrade })).toBe( + cargo1toml + ); }); it('updates normal dependency', () => { const upgrade = { @@ -84,9 +112,15 @@ describe('lib/manager/cargo/update', () => { managerData: { nestedVersion: false }, newValue: '0.3.0', }; - expect(updateDependency(cargo1toml, upgrade)).not.toBeNull(); - expect(updateDependency(cargo1toml, upgrade)).not.toBe(cargo1toml); - expect(updateDependency(cargo1toml, upgrade)).toMatchSnapshot(); + expect( + updateDependency({ fileContent: cargo1toml, upgrade }) + ).not.toBeNull(); + expect(updateDependency({ fileContent: cargo1toml, upgrade })).not.toBe( + cargo1toml + ); + expect( + updateDependency({ fileContent: cargo1toml, upgrade }) + ).toMatchSnapshot(); }); it('updates normal dependency with mismatch on first try', () => { const upgrade = { @@ -95,9 +129,15 @@ describe('lib/manager/cargo/update', () => { managerData: { nestedVersion: false }, newValue: '1.2.3', }; - expect(updateDependency(cargo1toml, upgrade)).not.toBeNull(); - expect(updateDependency(cargo1toml, upgrade)).not.toBe(cargo1toml); - expect(updateDependency(cargo1toml, upgrade)).toMatchSnapshot(); + expect( + updateDependency({ fileContent: cargo1toml, upgrade }) + ).not.toBeNull(); + expect(updateDependency({ fileContent: cargo1toml, upgrade })).not.toBe( + cargo1toml + ); + expect( + updateDependency({ fileContent: cargo1toml, upgrade }) + ).toMatchSnapshot(); }); it('updates nested version dependency', () => { const upgrade = { @@ -106,9 +146,15 @@ describe('lib/manager/cargo/update', () => { managerData: { nestedVersion: true }, newValue: '0.2.0', }; - expect(updateDependency(cargo1toml, upgrade)).not.toBeNull(); - expect(updateDependency(cargo1toml, upgrade)).not.toBe(cargo1toml); - expect(updateDependency(cargo1toml, upgrade)).toMatchSnapshot(); + expect( + updateDependency({ fileContent: cargo1toml, upgrade }) + ).not.toBeNull(); + expect(updateDependency({ fileContent: cargo1toml, upgrade })).not.toBe( + cargo1toml + ); + expect( + updateDependency({ fileContent: cargo1toml, upgrade }) + ).toMatchSnapshot(); }); it('updates platform specific dependency', () => { const upgrade = { @@ -118,9 +164,15 @@ describe('lib/manager/cargo/update', () => { managerData: { nestedVersion: true }, newValue: '0.4.0', }; - expect(updateDependency(cargo1toml, upgrade)).not.toBeNull(); - expect(updateDependency(cargo1toml, upgrade)).not.toBe(cargo1toml); - expect(updateDependency(cargo1toml, upgrade)).toMatchSnapshot(); + expect( + updateDependency({ fileContent: cargo1toml, upgrade }) + ).not.toBeNull(); + expect(updateDependency({ fileContent: cargo1toml, upgrade })).not.toBe( + cargo1toml + ); + expect( + updateDependency({ fileContent: cargo1toml, upgrade }) + ).toMatchSnapshot(); }); it('handles invalid standard tables gracefully', () => { const upgrade = { @@ -129,7 +181,9 @@ describe('lib/manager/cargo/update', () => { depType: 'dependencies', newValue: '2.0.0', }; - expect(updateDependency(cargo4toml, upgrade)).toEqual(cargo4toml); + expect(updateDependency({ fileContent: cargo4toml, upgrade })).toEqual( + cargo4toml + ); }); it('does not update in case of error', () => { const upgrade = { @@ -138,7 +192,9 @@ describe('lib/manager/cargo/update', () => { managerData: { nestedVersion: false }, newValue: '0.3.0', }; - expect(updateDependency(cargo1toml, upgrade)).toEqual(cargo1toml); + expect(updateDependency({ fileContent: cargo1toml, upgrade })).toEqual( + cargo1toml + ); }); it('does not update in case of error', () => { const upgrade = { @@ -147,7 +203,9 @@ describe('lib/manager/cargo/update', () => { managerData: { nestedVersion: true }, // Should be false newValue: '0.3.0', }; - expect(updateDependency(cargo1toml, upgrade)).toEqual(cargo1toml); + expect(updateDependency({ fileContent: cargo1toml, upgrade })).toEqual( + cargo1toml + ); }); it('does not update in case of error', () => { const upgrade = { @@ -156,7 +214,9 @@ describe('lib/manager/cargo/update', () => { managerData: { nestedVersion: false }, // Should be true newValue: '0.3.0', }; - expect(updateDependency(cargo1toml, upgrade)).toEqual(cargo1toml); + expect(updateDependency({ fileContent: cargo1toml, upgrade })).toEqual( + cargo1toml + ); }); it('updates platform specific normal dependency', () => { const upgrade = { @@ -166,8 +226,12 @@ describe('lib/manager/cargo/update', () => { target: 'cfg(target_arch = "wasm32")', newValue: '0.3.0', }; - expect(updateDependency(cargo5toml, upgrade)).not.toBeNull(); - expect(updateDependency(cargo5toml, upgrade)).not.toBe(cargo5toml); + expect( + updateDependency({ fileContent: cargo5toml, upgrade }) + ).not.toBeNull(); + expect(updateDependency({ fileContent: cargo5toml, upgrade })).not.toBe( + cargo5toml + ); }); it('updates platform specific table dependency', () => { const upgrade = { @@ -177,8 +241,12 @@ describe('lib/manager/cargo/update', () => { target: 'cfg(target_arch = "wasm32")', newValue: '0.4.0', }; - expect(updateDependency(cargo5toml, upgrade)).not.toBeNull(); - expect(updateDependency(cargo5toml, upgrade)).not.toBe(cargo5toml); + expect( + updateDependency({ fileContent: cargo5toml, upgrade }) + ).not.toBeNull(); + expect(updateDependency({ fileContent: cargo5toml, upgrade })).not.toBe( + cargo5toml + ); }); }); }); diff --git a/lib/manager/cargo/update.ts b/lib/manager/cargo/update.ts index 11b6d7c977b7d2dfeb96b8e752374260a2b0ac38..e588de4829807ac2028d89464a93c41e51c52e1d 100644 --- a/lib/manager/cargo/update.ts +++ b/lib/manager/cargo/update.ts @@ -1,7 +1,7 @@ import { isEqual } from 'lodash'; import { parse } from 'toml'; import { logger } from '../../logger'; -import { Upgrade } from '../common'; +import { UpdateDependencyConfig } from '../common'; import { CargoConfig, CargoSection } from './types'; // Return true if the match string is found at index in content @@ -24,10 +24,10 @@ function replaceAt( ); } -export function updateDependency( - fileContent: string, - upgrade: Upgrade<{ nestedVersion?: boolean }> -): string { +export function updateDependency({ + fileContent, + upgrade, +}: UpdateDependencyConfig): string { logger.trace({ config: upgrade }, 'poetry.updateDependency()'); if (!upgrade) { return fileContent; diff --git a/lib/manager/circleci/update.spec.ts b/lib/manager/circleci/update.spec.ts index 83b7f0ef39d3fe1aedde28cc07c1117cbd02b133..53fec3cc4cddda21a570c66f763f6cc0a1163533 100644 --- a/lib/manager/circleci/update.spec.ts +++ b/lib/manager/circleci/update.spec.ts @@ -20,7 +20,10 @@ describe('manager/circleci/update', () => { newValue: '8.10.0', newDigest: 'sha256:abcdefghijklmnop', }; - const res = dcUpdate.updateDependency(yamlFile, upgrade); + const res = dcUpdate.updateDependency({ + fileContent: yamlFile, + upgrade, + }); expect(res).not.toEqual(yamlFile); expect(res.includes(upgrade.newDigest)).toBe(true); }); @@ -30,7 +33,10 @@ describe('manager/circleci/update', () => { depType: 'docker', depName: 'node', }; - const res = dcUpdate.updateDependency(yamlFile, upgrade); + const res = dcUpdate.updateDependency({ + fileContent: yamlFile, + upgrade, + }); expect(res).toEqual(yamlFile); }); it('returns null if mismatch', () => { @@ -41,11 +47,17 @@ describe('manager/circleci/update', () => { newValue: '9.6.8', newDigest: 'sha256:abcdefghijklmnop', }; - const res = dcUpdate.updateDependency(yamlFile, upgrade); + const res = dcUpdate.updateDependency({ + fileContent: yamlFile, + upgrade, + }); expect(res).toBeNull(); }); it('returns null if error', () => { - const res = dcUpdate.updateDependency(null, null); + const res = dcUpdate.updateDependency({ + fileContent: null, + upgrade: null, + }); expect(res).toBeNull(); }); it('replaces orbs', () => { @@ -56,7 +68,10 @@ describe('manager/circleci/update', () => { managerData: { lineNumber: 3 }, newValue: '4.2.0', }; - const res = dcUpdate.updateDependency(yamlFile2, upgrade); + const res = dcUpdate.updateDependency({ + fileContent: yamlFile2, + upgrade, + }); expect(res).not.toEqual(yamlFile2); expect(res.includes(upgrade.newValue)).toBe(true); }); @@ -68,7 +83,10 @@ describe('manager/circleci/update', () => { managerData: { lineNumber: 3 }, newValue: '4.1.0', }; - const res = dcUpdate.updateDependency(yamlFile2, upgrade); + const res = dcUpdate.updateDependency({ + fileContent: yamlFile2, + upgrade, + }); expect(res).toEqual(yamlFile2); }); it('returns null for orb mismatch', () => { @@ -79,7 +97,10 @@ describe('manager/circleci/update', () => { managerData: { lineNumber: 2 }, newValue: '4.2.0', }; - const res = dcUpdate.updateDependency(yamlFile2, upgrade); + const res = dcUpdate.updateDependency({ + fileContent: yamlFile2, + upgrade, + }); expect(res).toBeNull(); }); it('returns null for unknown depType', () => { @@ -89,7 +110,10 @@ describe('manager/circleci/update', () => { managerData: { lineNumber: 3 }, newValue: '4.2.0', }; - const res = dcUpdate.updateDependency(yamlFile2, upgrade); + const res = dcUpdate.updateDependency({ + fileContent: yamlFile2, + upgrade, + }); expect(res).toBeNull(); }); }); diff --git a/lib/manager/circleci/update.ts b/lib/manager/circleci/update.ts index 5732081cfcfcf34710b11b952383c18cd28cccf2..4e4839c54d8785dbf387ec66b0320d40a1644f32 100644 --- a/lib/manager/circleci/update.ts +++ b/lib/manager/circleci/update.ts @@ -1,11 +1,11 @@ import { logger } from '../../logger'; import { getNewFrom } from '../dockerfile/update'; -import { Upgrade } from '../common'; +import { UpdateDependencyConfig } from '../common'; -export function updateDependency( - fileContent: string, - upgrade: Upgrade -): string | null { +export function updateDependency({ + fileContent, + upgrade, +}: UpdateDependencyConfig): string | null { try { const lines = fileContent.split('\n'); const lineToChange = lines[upgrade.managerData.lineNumber]; diff --git a/lib/manager/common.ts b/lib/manager/common.ts index 7733e47fdb556a1b4e7b68af6149a1d08f4361ad..46e0f496bab8291277d0aa2d599516df9d05c801 100644 --- a/lib/manager/common.ts +++ b/lib/manager/common.ts @@ -180,6 +180,12 @@ export interface UpdateArtifact { newPackageFileContent: string; config: UpdateArtifactsConfig; } + +export interface UpdateDependencyConfig { + fileContent: string; + upgrade: Upgrade; +} + export interface ManagerApi { language?: string; supportsLockFileMaintenance?: boolean; @@ -206,8 +212,7 @@ export interface ManagerApi { ): Result<UpdateArtifactsResult[] | null>; updateDependency( - fileContent: string, - upgrade: Upgrade + updateDependencyConfig: UpdateDependencyConfig ): Result<string | null>; } diff --git a/lib/manager/docker-compose/update.spec.ts b/lib/manager/docker-compose/update.spec.ts index c65940ed390a18cb5c08c2345ad8c99fc716d574..b1682524cf178475c0358c8737def08795f23379 100644 --- a/lib/manager/docker-compose/update.spec.ts +++ b/lib/manager/docker-compose/update.spec.ts @@ -15,7 +15,7 @@ describe('manager/docker-compose/update', () => { newValue: '9.6.8', newDigest: 'sha256:abcdefghijklmnop', }; - const res = updateDependency(yamlFile, upgrade); + const res = updateDependency({ fileContent: yamlFile, upgrade }); expect(res).not.toEqual(yamlFile); expect(res.includes(upgrade.newDigest)).toBe(true); }); @@ -25,7 +25,7 @@ describe('manager/docker-compose/update', () => { depName: 'quay.io/something/redis', newValue: 'alpine', }; - const res = updateDependency(yamlFile, upgrade); + const res = updateDependency({ fileContent: yamlFile, upgrade }); expect(res).toEqual(yamlFile); }); it('returns null if mismatch', () => { @@ -33,11 +33,11 @@ describe('manager/docker-compose/update', () => { managerData: { lineNumber: 17 }, newFrom: 'postgres:9.6.8@sha256:abcdefghijklmnop', }; - const res = updateDependency(yamlFile, upgrade); + const res = updateDependency({ fileContent: yamlFile, upgrade }); expect(res).toBeNull(); }); it('returns null if error', () => { - const res = updateDependency(null, null); + const res = updateDependency({ fileContent: null, upgrade: null }); expect(res).toBeNull(); }); }); diff --git a/lib/manager/docker-compose/update.ts b/lib/manager/docker-compose/update.ts index 9a12dc4076e64e07ba9a59b04c24c0f2f31bf664..dd8e3e73668784000ff385f5cd14fe2aa1f861cb 100644 --- a/lib/manager/docker-compose/update.ts +++ b/lib/manager/docker-compose/update.ts @@ -1,11 +1,11 @@ import { logger } from '../../logger'; import { getNewFrom } from '../dockerfile/update'; -import { Upgrade } from '../common'; +import { UpdateDependencyConfig } from '../common'; -export function updateDependency( - fileContent: string, - upgrade: Upgrade -): string { +export function updateDependency({ + fileContent, + upgrade, +}: UpdateDependencyConfig): string { try { const newFrom = getNewFrom(upgrade); logger.debug(`docker-compose.updateDependency(): ${newFrom}`); diff --git a/lib/manager/dockerfile/update.spec.ts b/lib/manager/dockerfile/update.spec.ts index c4d39734a6dea52bbecbff975bff39506adc58c1..cd4c163abe8631c52b5fc78838eda13785867eb9 100644 --- a/lib/manager/dockerfile/update.spec.ts +++ b/lib/manager/dockerfile/update.spec.ts @@ -10,7 +10,7 @@ describe('manager/dockerfile/update', () => { newValue: '8.1-alpine', newDigest: 'sha256:abcdefghijklmnop', }; - const res = dockerfile.updateDependency(fileContent, upgrade); + const res = dockerfile.updateDependency({ fileContent, upgrade }); expect(res).toMatchSnapshot(); }); it('replaces existing value with suffix', () => { @@ -26,7 +26,7 @@ describe('manager/dockerfile/update', () => { newValue: '8', newDigest: 'sha256:abcdefghijklmnop', }; - const res = dockerfile.updateDependency(fileContent, upgrade); + const res = dockerfile.updateDependency({ fileContent, upgrade }); expect(res).toMatchSnapshot(); }); it('handles strange whitespace', () => { @@ -43,7 +43,7 @@ describe('manager/dockerfile/update', () => { newDigest: 'sha256:abcdefghijklmnop', }; - const res = dockerfile.updateDependency(fileContent, upgrade); + const res = dockerfile.updateDependency({ fileContent, upgrade }); expect(res).toMatchSnapshot(); }); it('returns null if mismatch', () => { @@ -55,7 +55,7 @@ describe('manager/dockerfile/update', () => { newValue: '8', newDigest: 'sha256:abcdefghijklmnop', }; - const res = dockerfile.updateDependency(fileContent, upgrade); + const res = dockerfile.updateDependency({ fileContent, upgrade }); expect(res).toBeNull(); }); it('returns unchanged', () => { @@ -70,7 +70,7 @@ describe('manager/dockerfile/update', () => { depName: 'node', newValue: '8', }; - const res = dockerfile.updateDependency(fileContent, upgrade); + const res = dockerfile.updateDependency({ fileContent, upgrade }); expect(res).toBe(fileContent); }); it('returns null on error', () => { @@ -81,7 +81,7 @@ describe('manager/dockerfile/update', () => { newValue: '8', newDigest: 'sha256:abcdefghijklmnop', }; - const res = dockerfile.updateDependency(fileContent, upgrade); + const res = dockerfile.updateDependency({ fileContent, upgrade }); expect(res).toBeNull(); }); it('handles similar FROM', () => { @@ -103,8 +103,14 @@ describe('manager/dockerfile/update', () => { newValue: 'wheezy', newDigest: 'sha256:abcdefghijklmnop', }; - let res = dockerfile.updateDependency(fileContent, upgrade1); - res = dockerfile.updateDependency(res, upgrade2); + let res = dockerfile.updateDependency({ + fileContent, + upgrade: upgrade1, + }); + res = dockerfile.updateDependency({ + fileContent: res, + upgrade: upgrade2, + }); expect(res).toMatchSnapshot(); expect(res.includes('as stage-1')).toBe(true); }); @@ -120,7 +126,7 @@ describe('manager/dockerfile/update', () => { depName: 'gcr.io/k8s-skaffold/skaffold', newValue: 'v0.12.0', }; - const res = dockerfile.updateDependency(fileContent, upgrade); + const res = dockerfile.updateDependency({ fileContent, upgrade }); expect(res).toMatchSnapshot(); expect(res.includes(upgrade.newValue)).toBe(true); }); diff --git a/lib/manager/dockerfile/update.ts b/lib/manager/dockerfile/update.ts index 5f034bd5f8b08a666d4bd79a5322032802745041..0365be47c5d023f5378e39a9998f9297ff25f7a0 100644 --- a/lib/manager/dockerfile/update.ts +++ b/lib/manager/dockerfile/update.ts @@ -1,5 +1,5 @@ import { logger } from '../../logger'; -import { Upgrade } from '../common'; +import { UpdateDependencyConfig, Upgrade } from '../common'; export function getNewFrom(upgrade: Upgrade): string { const { depName, newValue, newDigest } = upgrade; @@ -13,10 +13,10 @@ export function getNewFrom(upgrade: Upgrade): string { return newFrom; } -export function updateDependency( - fileContent: string, - upgrade: Upgrade -): string | null { +export function updateDependency({ + fileContent, + upgrade, +}: UpdateDependencyConfig): string | null { try { const { lineNumber, fromSuffix } = upgrade.managerData; let { fromPrefix } = upgrade.managerData; diff --git a/lib/manager/droneci/update.spec.ts b/lib/manager/droneci/update.spec.ts index f78643ced61a87a8c48af73776f94655da7f9b58..5947dbbee4a5a818e700ad38dfb58c410797fbae 100644 --- a/lib/manager/droneci/update.spec.ts +++ b/lib/manager/droneci/update.spec.ts @@ -18,7 +18,7 @@ describe('manager/droneci/update', () => { newValue: '10.16.0', newDigest: 'sha256:new-node-hash', }; - const res = updateDependency(droneYAML, upgrade); + const res = updateDependency({ fileContent: droneYAML, upgrade }); expect(res).not.toEqual(droneYAML); expect(res.includes(upgrade.newDigest)).toBe(true); }); @@ -29,7 +29,7 @@ describe('manager/droneci/update', () => { depType: 'docker', depName: 'redis:alpine', }; - const res = updateDependency(droneYAML, upgrade); + const res = updateDependency({ fileContent: droneYAML, upgrade }); expect(res).toEqual(droneYAML); }); @@ -41,12 +41,12 @@ describe('manager/droneci/update', () => { newValue: '9.6.8', newDigest: 'sha256:abcdefghijklmnop', }; - const res = updateDependency(droneYAML, upgrade); + const res = updateDependency({ fileContent: droneYAML, upgrade }); expect(res).toBeNull(); }); it('returns null if error', () => { - const res = updateDependency(null, null); + const res = updateDependency({ fileContent: null, upgrade: null }); expect(res).toBeNull(); }); @@ -57,7 +57,7 @@ describe('manager/droneci/update', () => { managerData: { lineNumber: 3 }, newValue: '4.2.0', }; - const res = updateDependency(droneYAML, upgrade); + const res = updateDependency({ fileContent: droneYAML, upgrade }); expect(res).toBeNull(); }); }); diff --git a/lib/manager/droneci/update.ts b/lib/manager/droneci/update.ts index d2f38eec6980f51f8e8c5526f1d873c1d9db4e53..3939105e45adf132a034df93280490eac1a23848 100644 --- a/lib/manager/droneci/update.ts +++ b/lib/manager/droneci/update.ts @@ -1,11 +1,11 @@ import { logger } from '../../logger'; import { getNewFrom } from '../dockerfile/update'; -import { Upgrade } from '../common'; +import { UpdateDependencyConfig } from '../common'; -export function updateDependency( - fileContent: string, - upgrade: Upgrade -): string | null { +export function updateDependency({ + fileContent, + upgrade, +}: UpdateDependencyConfig): string | null { try { const lines = fileContent.split('\n'); const lineToChange = lines[upgrade.managerData.lineNumber]; diff --git a/lib/manager/git-submodules/update.spec.ts b/lib/manager/git-submodules/update.spec.ts index 6bda3dfa2533671e7921ae7b0177cd17de23a9ea..3f99ab6fee294deeb7ea491a4e64f4e624389ea3 100644 --- a/lib/manager/git-submodules/update.spec.ts +++ b/lib/manager/git-submodules/update.spec.ts @@ -14,7 +14,10 @@ describe('manager/git-submodules/update', () => { throw new Error(); }, }); - const update = await updateDependency('', {}); + const update = await updateDependency({ + fileContent: '', + upgrade: {}, + }); expect(update).toBeNull(); }); it('returns content on update', async () => { @@ -24,7 +27,10 @@ describe('manager/git-submodules/update', () => { return Promise.resolve(); }, }); - const update = await updateDependency('', { localDir: tmpDir.path }); + const update = await updateDependency({ + fileContent: '', + upgrade: { localDir: tmpDir.path }, + }); expect(update).toEqual(''); }); }); diff --git a/lib/manager/git-submodules/update.ts b/lib/manager/git-submodules/update.ts index e33367dd6a44bc4ade56a4eec34b72e791bf831f..6057c798265263ae1b89ca6c5a52b497e2bf0e8f 100644 --- a/lib/manager/git-submodules/update.ts +++ b/lib/manager/git-submodules/update.ts @@ -1,11 +1,11 @@ import Git from 'simple-git/promise'; -import { Upgrade } from '../common'; +import { UpdateDependencyConfig } from '../common'; -export default async function updateDependency( - fileContent: string, - upgrade: Upgrade -): Promise<string | null> { +export default async function updateDependency({ + fileContent, + upgrade, +}: UpdateDependencyConfig): Promise<string | null> { const git = Git(upgrade.localDir); try { diff --git a/lib/manager/github-actions/update.spec.ts b/lib/manager/github-actions/update.spec.ts index 4a85c91fce7e0ea02dc8a1fee266b51088849566..57d66b8034df95ab325e61234b44c3c55920b3e6 100644 --- a/lib/manager/github-actions/update.spec.ts +++ b/lib/manager/github-actions/update.spec.ts @@ -19,7 +19,7 @@ describe('manager/github-actions/update', () => { depName: 'replicated/dockerfilelint', newDigest: 'sha256:abcdefghijklmnop', }; - const res = updateDependency(workflow1, upgrade); + const res = updateDependency({ fileContent: workflow1, upgrade }); expect(res).not.toEqual(workflow1); expect(res.includes(upgrade.newDigest)).toBe(true); }); @@ -28,7 +28,7 @@ describe('manager/github-actions/update', () => { managerData: { lineNumber: 11 }, depName: 'replicated/dockerfilelint', }; - const res = updateDependency(workflow1, upgrade); + const res = updateDependency({ fileContent: workflow1, upgrade }); expect(res).toEqual(workflow1); }); it('returns null if mismatch', () => { @@ -36,11 +36,11 @@ describe('manager/github-actions/update', () => { managerData: { lineNumber: 12 }, newFrom: 'registry:2.6.2@sha256:abcdefghijklmnop', }; - const res = updateDependency(workflow1, upgrade); + const res = updateDependency({ fileContent: workflow1, upgrade }); expect(res).toBeNull(); }); it('returns null if error', () => { - const res = updateDependency(null, null); + const res = updateDependency({ fileContent: null, upgrade: null }); expect(res).toBeNull(); }); it('replaces existing uses value in yaml file', () => { @@ -49,7 +49,7 @@ describe('manager/github-actions/update', () => { depName: 'replicated/dockerfilelint', newDigest: 'sha256:abcdefghijklmnop', }; - const res = updateDependency(workflow2, upgrade); + const res = updateDependency({ fileContent: workflow2, upgrade }); expect(res).not.toEqual(workflow2); expect(res.includes(upgrade.newDigest)).toBe(true); }); @@ -58,7 +58,7 @@ describe('manager/github-actions/update', () => { managerData: { lineNumber: 17 }, depName: 'replicated/dockerfilelint', }; - const res = updateDependency(workflow2, upgrade); + const res = updateDependency({ fileContent: workflow2, upgrade }); expect(res).toEqual(workflow2); }); it('returns null if mismatch in yaml file', () => { @@ -66,7 +66,7 @@ describe('manager/github-actions/update', () => { managerData: { lineNumber: 12 }, newFrom: 'registry:2.6.2@sha256:abcdefghijklmnop', }; - const res = updateDependency(workflow2, upgrade); + const res = updateDependency({ fileContent: workflow2, upgrade }); expect(res).toBeNull(); }); }); diff --git a/lib/manager/github-actions/update.ts b/lib/manager/github-actions/update.ts index 449a403cda39d5bd322a95971acaff65ad6961c0..c5d932439e146323655c3bc860eca10c0f10c646 100644 --- a/lib/manager/github-actions/update.ts +++ b/lib/manager/github-actions/update.ts @@ -1,11 +1,11 @@ import { logger } from '../../logger'; import { getNewFrom } from '../dockerfile/update'; -import { Upgrade } from '../common'; +import { UpdateDependencyConfig } from '../common'; -export function updateDependency( - fileContent: string, - upgrade: Upgrade -): string | null { +export function updateDependency({ + fileContent, + upgrade, +}: UpdateDependencyConfig): string | null { try { const newFrom = getNewFrom(upgrade); logger.debug(`github-actions.updateDependency(): ${newFrom}`); diff --git a/lib/manager/gitlabci-include/update.spec.ts b/lib/manager/gitlabci-include/update.spec.ts index 7a22839281129e322e7df62402fab1ceb4c9850c..a8c84ebbcb1fef891a9cb4639e636aad1bd7c76e 100644 --- a/lib/manager/gitlabci-include/update.spec.ts +++ b/lib/manager/gitlabci-include/update.spec.ts @@ -14,7 +14,7 @@ describe('manager/gitlabci-include/update', () => { depName: 'mikebryant/include-source-example', newValue: '1.0.1', }; - const res = updateDependency(yamlFile, upgrade); + const res = updateDependency({ fileContent: yamlFile, upgrade }); expect(res).not.toEqual(yamlFile); expect(res.includes(upgrade.newValue)).toBe(true); }); @@ -24,11 +24,11 @@ describe('manager/gitlabci-include/update', () => { depName: 'mikebryant/include-source-example', newValue: '1.0.0', }; - const res = updateDependency(yamlFile, upgrade); + const res = updateDependency({ fileContent: yamlFile, upgrade }); expect(res).toEqual(yamlFile); }); it('returns null if error', () => { - const res = updateDependency(null, null); + const res = updateDependency({ fileContent: null, upgrade: null }); expect(res).toBeNull(); }); }); diff --git a/lib/manager/gitlabci-include/update.ts b/lib/manager/gitlabci-include/update.ts index cb116aac3645fce67502f21220818538d394536b..41eab2d37f037f3896b95c870e434615123ccfbb 100644 --- a/lib/manager/gitlabci-include/update.ts +++ b/lib/manager/gitlabci-include/update.ts @@ -1,15 +1,15 @@ import YAWN from 'yawn-yaml/cjs'; import { logger } from '../../logger'; -import { Upgrade } from '../common'; +import { UpdateDependencyConfig } from '../common'; -export function updateDependency( - currentFileContent: string, - upgrade: Upgrade -): string | null { +export function updateDependency({ + fileContent, + upgrade, +}: UpdateDependencyConfig): string | null { try { const { depName, newValue } = upgrade; - const yawn = new YAWN(currentFileContent); + const yawn = new YAWN(fileContent); const doc = yawn.json; diff --git a/lib/manager/gitlabci/update.spec.ts b/lib/manager/gitlabci/update.spec.ts index 36f957e8f070a18e92cf520fe3efc53e5cc326e4..cc1538e28de11fb0ce51077f8651ad9d3719eb1c 100644 --- a/lib/manager/gitlabci/update.spec.ts +++ b/lib/manager/gitlabci/update.spec.ts @@ -16,7 +16,7 @@ describe('manager/gitlabci/update', () => { newValue: '7.0.0', newDigest: 'sha256:abcdefghijklmnop', }; - const res = updateDependency(yamlFile, upgrade); + const res = updateDependency({ fileContent: yamlFile, upgrade }); expect(res).not.toEqual(yamlFile); expect(res.includes(upgrade.newDigest)).toBe(true); }); @@ -27,7 +27,7 @@ describe('manager/gitlabci/update', () => { depName: 'hadolint/hadolint', newValue: 'latest', }; - const res = updateDependency(yamlFile, upgrade); + const res = updateDependency({ fileContent: yamlFile, upgrade }); expect(res).toEqual(yamlFile); }); it('returns null if mismatch', () => { @@ -38,7 +38,7 @@ describe('manager/gitlabci/update', () => { newValue: '9.6.8', newDigest: 'sha256:abcdefghijklmnop', }; - const res = updateDependency(yamlFile, upgrade); + const res = updateDependency({ fileContent: yamlFile, upgrade }); expect(res).toBeNull(); }); it('replaces image-name value', () => { @@ -48,7 +48,7 @@ describe('manager/gitlabci/update', () => { depName: 'image-name-test', newValue: '1.35', }; - const res = updateDependency(yamlFile, upgrade); + const res = updateDependency({ fileContent: yamlFile, upgrade }); expect(res).not.toEqual(yamlFile); }); it('returns same image-name value', () => { @@ -58,7 +58,7 @@ describe('manager/gitlabci/update', () => { depName: 'image-name-test', newValue: '1.15', }; - const res = updateDependency(yamlFile, upgrade); + const res = updateDependency({ fileContent: yamlFile, upgrade }); expect(res).toEqual(yamlFile); }); it('replaces service-image update', () => { @@ -69,7 +69,7 @@ describe('manager/gitlabci/update', () => { newValue: '7.0.0', newDigest: 'sha256:abcdefghijklmnop', }; - const res = updateDependency(yamlFile, upgrade); + const res = updateDependency({ fileContent: yamlFile, upgrade }); expect(res).not.toEqual(yamlFile); expect(res.includes(upgrade.newDigest)).toBe(true); }); @@ -81,7 +81,7 @@ describe('manager/gitlabci/update', () => { newValue: '9.6.8', newDigest: 'sha256:abcdefghijklmnop', }; - const res = updateDependency(yamlFile, upgrade); + const res = updateDependency({ fileContent: yamlFile, upgrade }); expect(res).toBeNull(); }); it('returns service-image same', () => { @@ -91,11 +91,11 @@ describe('manager/gitlabci/update', () => { depName: 'docker', newValue: 'dind', }; - const res = updateDependency(yamlFile, upgrade); + const res = updateDependency({ fileContent: yamlFile, upgrade }); expect(res).toEqual(yamlFile); }); it('returns null if error', () => { - const res = updateDependency(null, null); + const res = updateDependency({ fileContent: null, upgrade: null }); expect(res).toBeNull(); }); }); diff --git a/lib/manager/gitlabci/update.ts b/lib/manager/gitlabci/update.ts index 17d6a57163f3d1c5ae37696302f9538cbf75b703..77946b3ca3167d885377d07efc1b0a9a0a4bf864 100644 --- a/lib/manager/gitlabci/update.ts +++ b/lib/manager/gitlabci/update.ts @@ -1,14 +1,14 @@ import { logger } from '../../logger'; import { getNewFrom } from '../dockerfile/update'; -import { Upgrade } from '../common'; +import { UpdateDependencyConfig } from '../common'; -export function updateDependency( - currentFileContent: string, - upgrade: Upgrade -): string | null { +export function updateDependency({ + fileContent, + upgrade, +}: UpdateDependencyConfig): string | null { try { const newFrom = getNewFrom(upgrade); - const lines = currentFileContent.split('\n'); + const lines = fileContent.split('\n'); const lineToChange = lines[upgrade.managerData.lineNumber]; if (['image', 'image-name'].includes(upgrade.depType)) { const imageLine = /^(\s*(?:image|name):\s*'?"?)[^\s'"]+('?"?\s*)$/; @@ -19,7 +19,7 @@ export function updateDependency( const newLine = lineToChange.replace(imageLine, `$1${newFrom}$2`); if (newLine === lineToChange) { logger.debug('No changes necessary'); - return currentFileContent; + return fileContent; } lines[upgrade.managerData.lineNumber] = newLine; return lines.join('\n'); @@ -32,7 +32,7 @@ export function updateDependency( const newLine = lineToChange.replace(serviceLine, `$1${newFrom}$2`); if (newLine === lineToChange) { logger.debug('No changes necessary'); - return currentFileContent; + return fileContent; } lines[upgrade.managerData.lineNumber] = newLine; return lines.join('\n'); diff --git a/lib/manager/gomod/update.spec.ts b/lib/manager/gomod/update.spec.ts index 3782c7c44cc4530400663e539dd3a1f997357c6c..16a2a124bacf6b96fe24a5de93a001495aa733a0 100644 --- a/lib/manager/gomod/update.spec.ts +++ b/lib/manager/gomod/update.spec.ts @@ -13,7 +13,7 @@ describe('manager/gomod/update', () => { newValue: 'v0.8.0', depType: 'require', }; - const res = updateDependency(gomod1, upgrade); + const res = updateDependency({ fileContent: gomod1, upgrade }); expect(res).not.toEqual(gomod1); expect(res.includes(upgrade.newValue)).toBe(true); }); @@ -24,7 +24,10 @@ describe('manager/gomod/update', () => { newValue: 'v0.8.0', depType: 'require', }; - const res1 = updateDependency(gomod1, upgrade1); + const res1 = updateDependency({ + fileContent: gomod1, + upgrade: upgrade1, + }); expect(res1).not.toEqual(gomod1); expect(res1.includes(upgrade1.newValue)).toBe(true); const upgrade2 = { @@ -33,7 +36,10 @@ describe('manager/gomod/update', () => { newValue: 'v1.15.36', depType: 'require', }; - const res2 = updateDependency(res1, upgrade2); + const res2 = updateDependency({ + fileContent: res1, + upgrade: upgrade2, + }); expect(res2).not.toEqual(res1); expect(res2).toMatchSnapshot(); }); @@ -43,7 +49,7 @@ describe('manager/gomod/update', () => { managerData: { lineNumber: 2 }, newValue: 'v0.7.0', }; - const res = updateDependency(gomod1, upgrade); + const res = updateDependency({ fileContent: gomod1, upgrade }); expect(res).toEqual(gomod1); }); it('replaces major updates > 1', () => { @@ -56,7 +62,7 @@ describe('manager/gomod/update', () => { newValue: 'v2.0.0', depType: 'require', }; - const res = updateDependency(gomod1, upgrade); + const res = updateDependency({ fileContent: gomod1, upgrade }); expect(res).not.toEqual(gomod2); expect(res.includes(upgrade.newValue)).toBe(true); expect(res.includes('github.com/pkg/errors/v2')).toBe(true); @@ -71,7 +77,7 @@ describe('manager/gomod/update', () => { newValue: 'v2.0.0', depType: 'require', }; - const res = updateDependency(gomod1, upgrade); + const res = updateDependency({ fileContent: gomod1, upgrade }); expect(res).toMatchSnapshot(); expect(res).not.toEqual(gomod2); expect(res.includes('gopkg.in/russross/blackfriday.v2 v2.0.0')).toBe( @@ -84,11 +90,11 @@ describe('manager/gomod/update', () => { managerData: { lineNumber: 2 }, newValue: 'v1.15.36', }; - const res = updateDependency(gomod1, upgrade); + const res = updateDependency({ fileContent: gomod1, upgrade }); expect(res).toBeNull(); }); it('returns null if error', () => { - const res = updateDependency(null, null); + const res = updateDependency({ fileContent: null, upgrade: null }); expect(res).toBeNull(); }); it('replaces multiline', () => { @@ -98,7 +104,7 @@ describe('manager/gomod/update', () => { newValue: 'v1.8.0', depType: 'require', }; - const res = updateDependency(gomod2, upgrade); + const res = updateDependency({ fileContent: gomod2, upgrade }); expect(res).not.toEqual(gomod2); expect(res.includes(upgrade.newValue)).toBe(true); }); @@ -109,7 +115,7 @@ describe('manager/gomod/update', () => { newValue: 'v4.8.0', depType: 'require', }; - const res = updateDependency(gomod2, upgrade); + const res = updateDependency({ fileContent: gomod2, upgrade }); expect(res).toMatchSnapshot(); expect(res).not.toEqual(gomod2); expect(res.includes(upgrade.newValue)).toBe(true); @@ -124,7 +130,7 @@ describe('manager/gomod/update', () => { updateType: 'major', depType: 'require', }; - const res = updateDependency(gomod2, upgrade); + const res = updateDependency({ fileContent: gomod2, upgrade }); expect(res).not.toEqual(gomod2); expect(res.includes(upgrade.newValue)).toBe(true); expect(res.includes('github.com/emirpasic/gods/v2')).toBe(true); @@ -139,7 +145,7 @@ describe('manager/gomod/update', () => { updateType: 'major', depType: 'require', }; - const res = updateDependency(gomod2, upgrade); + const res = updateDependency({ fileContent: gomod2, upgrade }); expect(res).not.toEqual(gomod2); expect(res.includes(upgrade.newValue)).toBe(true); expect(res.includes('github.com/src-d/gcfg/v3')).toBe(true); @@ -154,7 +160,7 @@ describe('manager/gomod/update', () => { newDigest: '123456123456abcdef', depType: 'require', }; - const res = updateDependency(gomod2, upgrade); + const res = updateDependency({ fileContent: gomod2, upgrade }); expect(res).not.toEqual(gomod2); expect(res.includes(upgrade.newDigest)).toBe(false); expect(res.includes(upgrade.newDigest.substring(0, 12))).toBe(true); @@ -169,7 +175,7 @@ describe('manager/gomod/update', () => { newDigest: '14d3d4c51834000000', depType: 'require', }; - const res = updateDependency(gomod2, upgrade); + const res = updateDependency({ fileContent: gomod2, upgrade }); expect(res).toEqual(gomod2); }); it('handles multiline mismatch', () => { @@ -179,7 +185,7 @@ describe('manager/gomod/update', () => { newValue: 'v1.8.0', depType: 'require', }; - const res = updateDependency(gomod2, upgrade); + const res = updateDependency({ fileContent: gomod2, upgrade }); expect(res).toBeNull(); }); it('handles +incompatible tag', () => { @@ -189,7 +195,7 @@ describe('manager/gomod/update', () => { newValue: 'v26.0.0', depType: 'require', }; - const res = updateDependency(gomod1, upgrade); + const res = updateDependency({ fileContent: gomod1, upgrade }); expect(res).not.toEqual(gomod1); // Assert that the version still contains +incompatible tag. expect(res.includes(upgrade.newValue + '+incompatible')).toBe(true); @@ -201,7 +207,7 @@ describe('manager/gomod/update', () => { newValue: 'v0.0.1', depType: 'replace', }; - const res = updateDependency(gomod1, upgrade); + const res = updateDependency({ fileContent: gomod1, upgrade }); expect(res).not.toEqual(gomod1); expect(res.includes(upgrade.newValue)).toBe(true); }); @@ -215,7 +221,7 @@ describe('manager/gomod/update', () => { newMajor: 2, updateType: 'major', }; - const res = updateDependency(gomod1, upgrade); + const res = updateDependency({ fileContent: gomod1, upgrade }); expect(res).not.toEqual(gomod1); expect(res.includes(upgrade.newValue)).toBe(true); }); @@ -231,7 +237,7 @@ describe('manager/gomod/update', () => { currentDigest: '14d3d4c51834', newDigest: '123456123456abcdef', }; - const res = updateDependency(gomod1, upgrade); + const res = updateDependency({ fileContent: gomod1, upgrade }); expect(res).not.toEqual(gomod1); expect(res.includes(upgrade.newDigest.substring(0, 12))).toBe(true); }); @@ -245,7 +251,7 @@ describe('manager/gomod/update', () => { newMajor: 6, updateType: 'major', }; - const res = updateDependency(gomod1, upgrade); + const res = updateDependency({ fileContent: gomod1, upgrade }); expect(res).not.toEqual(gomod1); expect(res.includes(upgrade.newValue)).toBe(true); expect(res).toContain(upgrade.depName + '/v6'); diff --git a/lib/manager/gomod/update.ts b/lib/manager/gomod/update.ts index 32f32d1a69d1032eb156997272f9e77b84dc2198..d4c781634d4c86edf4c32a39f3e0fd7479eee834 100644 --- a/lib/manager/gomod/update.ts +++ b/lib/manager/gomod/update.ts @@ -1,10 +1,10 @@ import { logger } from '../../logger'; -import { Upgrade } from '../common'; +import { UpdateDependencyConfig } from '../common'; -export function updateDependency( - currentFileContent: string, - upgrade: Upgrade -): string | null { +export function updateDependency({ + fileContent, + upgrade, +}: UpdateDependencyConfig): string | null { try { logger.debug(`gomod.updateDependency: ${upgrade.newValue}`); const { depName, depType } = upgrade; @@ -15,7 +15,7 @@ export function updateDependency( if (depNameNoVersion.startsWith('gopkg.in')) { depNameNoVersion = depNameNoVersion.replace(/\.v\d+$/, ''); } - const lines = currentFileContent.split('\n'); + const lines = fileContent.split('\n'); const lineToChange = lines[upgrade.managerData.lineNumber]; if ( !lineToChange.includes(depNameNoVersion) && @@ -50,7 +50,7 @@ export function updateDependency( upgrade.currentDigest.length ); if (lineToChange.includes(newDigestRightSized)) { - return currentFileContent; + return fileContent; } logger.debug( { depName, lineToChange, newDigestRightSized }, @@ -105,7 +105,7 @@ export function updateDependency( } if (newLine === lineToChange) { logger.debug('No changes necessary'); - return currentFileContent; + return fileContent; } lines[upgrade.managerData.lineNumber] = newLine; return lines.join('\n'); diff --git a/lib/manager/gradle-wrapper/update.spec.ts b/lib/manager/gradle-wrapper/update.spec.ts index f692bcf1b5464fc8b462fd6e59517069093ae594..fc23c3217ac50c7eb0838d3903b3dbe9fa93e0e9 100644 --- a/lib/manager/gradle-wrapper/update.spec.ts +++ b/lib/manager/gradle-wrapper/update.spec.ts @@ -36,7 +36,10 @@ describe('manager/gradle-wrapper/update', () => { got.mockReturnValueOnce({ body: checksum, }); - const res = await dcUpdate.updateDependency(propertiesFile2, upgrade); + const res = await dcUpdate.updateDependency({ + fileContent: propertiesFile2, + upgrade, + }); expect(res).toMatchSnapshot(); expect(res).not.toBeNull(); expect(res).not.toEqual(propertiesFile2); @@ -66,7 +69,10 @@ describe('manager/gradle-wrapper/update', () => { got.mockReturnValueOnce({ body: checksum, }); - const res = await dcUpdate.updateDependency(propertiesFile2, upgrade); + const res = await dcUpdate.updateDependency({ + fileContent: propertiesFile2, + upgrade, + }); expect(res).toEqual(propertiesFile2); }); @@ -86,7 +92,10 @@ describe('manager/gradle-wrapper/update', () => { got.mockRejectedValueOnce({ statusCode: 404, }); - const res = await dcUpdate.updateDependency(propertiesFile2, upgrade); + const res = await dcUpdate.updateDependency({ + fileContent: propertiesFile2, + upgrade, + }); expect(res).toBeNull(); }); @@ -104,12 +113,18 @@ describe('manager/gradle-wrapper/update', () => { 'https://services.gradle.org/distributions/gradle-4.10.3-all.zip.sha256', }; got.mockRejectedValueOnce(new Error()); - const res = await dcUpdate.updateDependency(propertiesFile2, upgrade); + const res = await dcUpdate.updateDependency({ + fileContent: propertiesFile2, + upgrade, + }); expect(res).toBeNull(); }); it('returns null if error', async () => { - const res = await dcUpdate.updateDependency(null, null); + const res = await dcUpdate.updateDependency({ + fileContent: null, + upgrade: null, + }); expect(res).toBeNull(); }); }); diff --git a/lib/manager/gradle-wrapper/update.ts b/lib/manager/gradle-wrapper/update.ts index 3f1231061830237a95d5080f84d4be1ffe522d59..f47e6e2c378e202a37150ec7f38779e005e29167 100644 --- a/lib/manager/gradle-wrapper/update.ts +++ b/lib/manager/gradle-wrapper/update.ts @@ -1,6 +1,6 @@ import got from '../../util/got'; import { logger } from '../../logger'; -import { Upgrade } from '../common'; +import { UpdateDependencyConfig } from '../common'; function replaceType(url: string): string { return url.replace('bin', 'all'); @@ -21,10 +21,10 @@ async function getChecksum(url: string): Promise<string> { } } -export async function updateDependency( - fileContent: string, - upgrade: Upgrade -): Promise<string | null> { +export async function updateDependency({ + fileContent, + upgrade, +}: UpdateDependencyConfig): Promise<string | null> { try { logger.debug(upgrade, 'gradle-wrapper.updateDependency()'); const lines = fileContent.split('\n'); diff --git a/lib/manager/gradle/index.spec.ts b/lib/manager/gradle/index.spec.ts index 20cc691ddea0cfb2c0e0faab119f6f9c13f75b94..a5e5bf7cc67dccb3e74a12480387fbd4838ebc3a 100644 --- a/lib/manager/gradle/index.spec.ts +++ b/lib/manager/gradle/index.spec.ts @@ -231,10 +231,10 @@ describe('manager/gradle', () => { const upgrade = { depGroup: 'cglib', name: 'cglib-nodep', version: '3.1', newValue: '3.2.8' }; - const buildGradleContentUpdated = manager.updateDependency( - buildGradleContent, - upgrade - ); + const buildGradleContentUpdated = manager.updateDependency({ + fileContent: buildGradleContent, + upgrade, + }); expect(buildGradleContent).not.toMatch('cglib:cglib-nodep:3.2.8'); @@ -258,10 +258,10 @@ describe('manager/gradle', () => { version: '0.20.0', newValue: '0.21.0', }; - const buildGradleContentUpdated = manager.updateDependency( - buildGradleContent, - upgrade - ); + const buildGradleContentUpdated = manager.updateDependency({ + fileContent: buildGradleContent, + upgrade, + }); expect(buildGradleContent).not.toMatch( 'id "com.github.ben-manes.versions" version "0.21.0"' @@ -291,10 +291,10 @@ describe('manager/gradle', () => { version: '0.20.0', newValue: '0.21.0', }; - const buildGradleContentUpdated = manager.updateDependency( - buildGradleContent, - upgrade - ); + const buildGradleContentUpdated = manager.updateDependency({ + fileContent: buildGradleContent, + upgrade, + }); expect(buildGradleContent).not.toMatch( 'id("com.github.ben-manes.versions") version "0.21.0"' diff --git a/lib/manager/gradle/index.ts b/lib/manager/gradle/index.ts index 0817e065c7d6e7ecb0a8a4c2621d2b8236e3f392..97db521cb0d6528803aa6e62c5e20efd3399bfde 100644 --- a/lib/manager/gradle/index.ts +++ b/lib/manager/gradle/index.ts @@ -15,7 +15,12 @@ import { createRenovateGradlePlugin, extractDependenciesFromUpdatesReport, } from './gradle-updates-report'; -import { PackageFile, ExtractConfig, Upgrade } from '../common'; +import { + PackageFile, + ExtractConfig, + Upgrade, + UpdateDependencyConfig, +} from '../common'; import { platform } from '../../platform'; import { LANGUAGE_JAVA } from '../../constants/languages'; import { DATASOURCE_MAVEN } from '../../constants/data-binary-source'; @@ -161,10 +166,10 @@ function buildGradleDependency(config: Upgrade): GradleDependency { return { group: config.depGroup, name: config.name, version: config.version }; } -export function updateDependency( - fileContent: string, - upgrade: Upgrade -): string { +export function updateDependency({ + fileContent, + upgrade, +}: UpdateDependencyConfig): string { // prettier-ignore logger.debug(`gradle.updateDependency(): packageFile:${upgrade.packageFile} depName:${upgrade.depName}, version:${upgrade.currentVersion} ==> ${upgrade.newValue}`); diff --git a/lib/manager/helm-requirements/update.spec.ts b/lib/manager/helm-requirements/update.spec.ts index 947c266ef3c5b3582df47e7e2ed94b9001e6efd3..31a705706cd6493d2b255a38dfceedeb1d6fd24f 100644 --- a/lib/manager/helm-requirements/update.spec.ts +++ b/lib/manager/helm-requirements/update.spec.ts @@ -14,7 +14,7 @@ describe('lib/manager/helm-requirements/update', () => { `; const upgrade = undefined; - expect(updateDependency(content, upgrade)).toBe(content); + expect(updateDependency({ fileContent: content, upgrade })).toBe(content); }); it('returns the same fileContent for invalid requirements.yaml file', () => { const content = ` @@ -25,7 +25,7 @@ describe('lib/manager/helm-requirements/update', () => { newValue: '0.11.0', repository: 'https://kubernetes-charts.storage.googleapis.com/', }; - expect(updateDependency(content, upgrade)).toBe(content); + expect(updateDependency({ fileContent: content, upgrade })).toBe(content); }); it('returns the same fileContent for empty upgrade', () => { const content = ` @@ -38,7 +38,7 @@ describe('lib/manager/helm-requirements/update', () => { repository: https://kubernetes-charts.storage.googleapis.com/ `; const upgrade = {}; - expect(updateDependency(content, upgrade)).toBe(content); + expect(updateDependency({ fileContent: content, upgrade })).toBe(content); }); it('upgrades dependency if valid upgrade', () => { const content = ` @@ -55,8 +55,12 @@ describe('lib/manager/helm-requirements/update', () => { newValue: '0.11.0', repository: 'https://kubernetes-charts.storage.googleapis.com/', }; - expect(updateDependency(content, upgrade)).not.toBe(content); - expect(updateDependency(content, upgrade)).toMatchSnapshot(); + expect(updateDependency({ fileContent: content, upgrade })).not.toBe( + content + ); + expect( + updateDependency({ fileContent: content, upgrade }) + ).toMatchSnapshot(); }); it('upgrades dependency if version field comes before name field', () => { const content = ` @@ -73,8 +77,12 @@ describe('lib/manager/helm-requirements/update', () => { newValue: '0.11.0', repository: 'https://kubernetes-charts.storage.googleapis.com/', }; - expect(updateDependency(content, upgrade)).not.toBe(content); - expect(updateDependency(content, upgrade)).toMatchSnapshot(); + expect(updateDependency({ fileContent: content, upgrade })).not.toBe( + content + ); + expect( + updateDependency({ fileContent: content, upgrade }) + ).toMatchSnapshot(); }); it('upgrades dependency if newValue version value is repeated', () => { const content = ` @@ -91,8 +99,12 @@ describe('lib/manager/helm-requirements/update', () => { newValue: '0.11.0', repository: 'https://kubernetes-charts.storage.googleapis.com/', }; - expect(updateDependency(content, upgrade)).not.toBe(content); - expect(updateDependency(content, upgrade)).toMatchSnapshot(); + expect(updateDependency({ fileContent: content, upgrade })).not.toBe( + content + ); + expect( + updateDependency({ fileContent: content, upgrade }) + ).toMatchSnapshot(); }); }); }); diff --git a/lib/manager/helm-requirements/update.ts b/lib/manager/helm-requirements/update.ts index 80f4d56ac92bbdd870c7dbaa983cce92a0bfdf70..a3c6d7855ad676d769cdbf9c87256ee71a2d666b 100644 --- a/lib/manager/helm-requirements/update.ts +++ b/lib/manager/helm-requirements/update.ts @@ -3,7 +3,7 @@ import yaml from 'js-yaml'; import is from '@sindresorhus/is'; import { logger } from '../../logger'; -import { Upgrade } from '../common'; +import { UpdateDependencyConfig } from '../common'; // Return true if the match string is found at index in content function matchAt(content: string, index: number, match: string): boolean { @@ -25,10 +25,10 @@ function replaceAt( ); } -export function updateDependency( - fileContent: string, - upgrade: Upgrade -): string | null { +export function updateDependency({ + fileContent, + upgrade, +}: UpdateDependencyConfig): string | null { logger.trace({ config: upgrade }, 'updateDependency()'); if (!upgrade || !upgrade.depName || !upgrade.newValue) { logger.debug('Failed to update dependency, invalid upgrade'); diff --git a/lib/manager/homebrew/update.spec.ts b/lib/manager/homebrew/update.spec.ts index c66887f47b6644c25e126df768ab8cf9e5e43728..38c4e0c2b99fd8bf01810e7c38843a6b4f204e44 100644 --- a/lib/manager/homebrew/update.spec.ts +++ b/lib/manager/homebrew/update.spec.ts @@ -35,7 +35,10 @@ describe('manager/homebrew/update', () => { newValue: 'v0.17.7', }; fromStream.mockResolvedValueOnce('new_hash_value'); - const newContent = await updateDependency(aide, upgrade); + const newContent = await updateDependency({ + fileContent: aide, + upgrade, + }); expect(newContent).not.toBeNull(); expect(newContent).not.toBe(aide); expect(newContent).toMatchSnapshot(); @@ -55,7 +58,10 @@ describe('manager/homebrew/update', () => { newValue: 'v0.9.3', }; fromStream.mockResolvedValueOnce('new_hash_value'); - const newContent = await updateDependency(ibazel, upgrade); + const newContent = await updateDependency({ + fileContent: ibazel, + upgrade, + }); expect(newContent).not.toBeNull(); expect(newContent).not.toBe(ibazel); expect(newContent).toMatchSnapshot(); @@ -75,7 +81,10 @@ describe('manager/homebrew/update', () => { newValue: 'v0.9.3', }; fromStream.mockRejectedValueOnce('Request failed'); - const newContent = await updateDependency(ibazel, upgrade); + const newContent = await updateDependency({ + fileContent: ibazel, + upgrade, + }); expect(newContent).not.toBeNull(); expect(newContent).toBe(ibazel); }); @@ -94,7 +103,10 @@ describe('manager/homebrew/update', () => { newValue: 'v0.9.3', }; fromStream.mockResolvedValueOnce('some_content'); - const newContent = await updateDependency(content, upgrade); + const newContent = await updateDependency({ + fileContent: content, + upgrade, + }); expect(newContent).not.toBeNull(); expect(newContent).toBe(content); }); @@ -116,7 +128,10 @@ describe('manager/homebrew/update', () => { fromStream .mockRejectedValueOnce('Request failed') .mockResolvedValueOnce('some_content'); - const newContent = await updateDependency(content, upgrade); + const newContent = await updateDependency({ + fileContent: content, + upgrade, + }); expect(newContent).not.toBeNull(); expect(newContent).toBe(content); }); @@ -138,7 +153,10 @@ describe('manager/homebrew/update', () => { fromStream .mockRejectedValueOnce('Request failed') .mockResolvedValueOnce('some_content'); - const newContent = await updateDependency(content, upgrade); + const newContent = await updateDependency({ + fileContent: content, + upgrade, + }); expect(newContent).not.toBeNull(); expect(newContent).toBe(content); }); @@ -165,7 +183,10 @@ describe('manager/homebrew/update', () => { newValue: 'v0.9.3', }; fromStream.mockResolvedValueOnce('some_content'); - const newContent = await updateDependency(content, upgrade); + const newContent = await updateDependency({ + fileContent: content, + upgrade, + }); expect(newContent).not.toBeNull(); expect(newContent).toBe(content); }); @@ -191,7 +212,10 @@ describe('manager/homebrew/update', () => { newValue: 'v0.9.3', }; fromStream.mockResolvedValueOnce('some_content'); - const newContent = await updateDependency(content, upgrade); + const newContent = await updateDependency({ + fileContent: content, + upgrade, + }); expect(newContent).not.toBeNull(); expect(newContent).toBe(content); }); @@ -218,7 +242,10 @@ describe('manager/homebrew/update', () => { newValue: 'v0.9.3', }; fromStream.mockResolvedValueOnce('some_content'); - const newContent = await updateDependency(content, upgrade); + const newContent = await updateDependency({ + fileContent: content, + upgrade, + }); expect(newContent).not.toBeNull(); expect(newContent).toBe(content); }); @@ -244,7 +271,10 @@ describe('manager/homebrew/update', () => { newValue: 'v0.9.3', }; fromStream.mockResolvedValueOnce('some_content'); - const newContent = await updateDependency(content, upgrade); + const newContent = await updateDependency({ + fileContent: content, + upgrade, + }); expect(newContent).not.toBeNull(); expect(newContent).toBe(content); }); @@ -265,7 +295,10 @@ describe('manager/homebrew/update', () => { fromStream .mockRejectedValueOnce('Request failed.') .mockRejectedValueOnce('Request failed.'); - const newContent = await updateDependency(aide, upgrade); + const newContent = await updateDependency({ + fileContent: aide, + upgrade, + }); expect(newContent).not.toBeNull(); expect(newContent).toBe(aide); expect(newContent).toMatchSnapshot(); diff --git a/lib/manager/homebrew/update.ts b/lib/manager/homebrew/update.ts index fd4b23b687f52aa67dfdc786831d13dbb0fc22c6..5c63b8afb2b2250c61207b885efbd0a5c546b3d8 100644 --- a/lib/manager/homebrew/update.ts +++ b/lib/manager/homebrew/update.ts @@ -4,7 +4,7 @@ import { parseUrlPath } from './extract'; import { skip, isSpace, removeComments } from './util'; import got from '../../util/got'; import { logger } from '../../logger'; -import { Upgrade } from '../common'; +import { UpdateDependencyConfig } from '../common'; function replaceUrl( idx: number, @@ -134,15 +134,15 @@ function updateSha256( } // TODO: Refactor -export async function updateDependency( - content: string, - upgrade: Upgrade -): Promise<string> { +export async function updateDependency({ + fileContent, + upgrade, +}: UpdateDependencyConfig): Promise<string> { logger.trace('updateDependency()'); /* 1. Update url field 2. Update sha256 field */ - let newContent = content; + let newContent = fileContent; let newUrl: string; // Example urls: // "https://github.com/bazelbuild/bazel-watcher/archive/v0.8.2.tar.gz" @@ -152,7 +152,7 @@ export async function updateDependency( logger.debug( `Failed to update - upgrade.managerData.url is invalid ${upgrade.depName}` ); - return content; + return fileContent; } let newSha256; try { @@ -177,33 +177,33 @@ export async function updateDependency( logger.debug( `Failed to download archive download for ${upgrade.depName} - update failed` ); - return content; + return fileContent; } } if (!newSha256) { logger.debug( `Failed to generate new sha256 for ${upgrade.depName} - update failed` ); - return content; + return fileContent; } const newParsedUrlPath = parseUrlPath(newUrl); if (!newParsedUrlPath) { logger.debug(`Failed to update url for dependency ${upgrade.depName}`); - return content; + return fileContent; } if (upgrade.newValue !== newParsedUrlPath.currentValue) { logger.debug(`Failed to update url for dependency ${upgrade.depName}`); - return content; + return fileContent; } - newContent = updateUrl(content, upgrade.managerData.url, newUrl); + newContent = updateUrl(fileContent, upgrade.managerData.url, newUrl); if (!newContent) { logger.debug(`Failed to update url for dependency ${upgrade.depName}`); - return content; + return fileContent; } newContent = updateSha256(newContent, upgrade.managerData.sha256, newSha256); if (!newContent) { logger.debug(`Failed to update sha256 for dependency ${upgrade.depName}`); - return content; + return fileContent; } return newContent; } diff --git a/lib/manager/kubernetes/update.spec.ts b/lib/manager/kubernetes/update.spec.ts index 100422c20a57a26b1fdf47b7aa7677c06d857c8d..a853ed1a0703f25a26bae7283c1576ec6aa2be8a 100644 --- a/lib/manager/kubernetes/update.spec.ts +++ b/lib/manager/kubernetes/update.spec.ts @@ -20,7 +20,7 @@ describe('manager/kubernetes/update', () => { newValue: '1.15.1', newDigest: 'sha256:abcdefghijklmnop', }; - const res = updateDependency(yamlFile, upgrade); + const res = updateDependency({ fileContent: yamlFile, upgrade }); expect(res).not.toEqual(yamlFile); expect(res.includes(upgrade.newDigest)).toBe(true); }); @@ -30,7 +30,7 @@ describe('manager/kubernetes/update', () => { depName: 'k8s.gcr.io/kube-proxy-amd64', newValue: 'v1.11.1', }; - const res = updateDependency(yamlFile, upgrade); + const res = updateDependency({ fileContent: yamlFile, upgrade }); expect(res).toEqual(yamlFile); }); it('returns null if mismatch', () => { @@ -38,11 +38,11 @@ describe('manager/kubernetes/update', () => { managerData: { lineNumber: 1 }, newFrom: 'k8s.gcr.io/kube-proxy-amd64:v1.11.1', }; - const res = updateDependency(yamlFile, upgrade); + const res = updateDependency({ fileContent: yamlFile, upgrade }); expect(res).toBeNull(); }); it('returns null if error', () => { - const res = updateDependency(null, null); + const res = updateDependency({ fileContent: null, upgrade: null }); expect(res).toBeNull(); }); it('replaces image inside YAML array', () => { @@ -51,7 +51,10 @@ describe('manager/kubernetes/update', () => { depName: 'quay.io/external_storage/local-volume-provisioner', newValue: 'v2.2.0', }; - const res = updateDependency(arraySyntaxFile, upgrade); + const res = updateDependency({ + fileContent: arraySyntaxFile, + upgrade, + }); expect(res).not.toEqual(arraySyntaxFile); expect(res).toMatchSnapshot(); }); diff --git a/lib/manager/kubernetes/update.ts b/lib/manager/kubernetes/update.ts index a471bd4dcc5001797a549b266e23691a797dc77c..f45229fc589a3f9783f982638d300f24e5e7238f 100644 --- a/lib/manager/kubernetes/update.ts +++ b/lib/manager/kubernetes/update.ts @@ -1,11 +1,11 @@ import { logger } from '../../logger'; import { getNewFrom } from '../dockerfile/update'; -import { Upgrade } from '../common'; +import { UpdateDependencyConfig } from '../common'; -export function updateDependency( - fileContent: string, - upgrade: Upgrade -): string | null { +export function updateDependency({ + fileContent, + upgrade, +}: UpdateDependencyConfig): string | null { try { const newFrom = getNewFrom(upgrade); logger.debug(`kubernetes.updateDependency(): ${newFrom}`); diff --git a/lib/manager/maven/index.spec.ts b/lib/manager/maven/index.spec.ts index 86b656185058bd4d7ad5200d789c2fe4838ec673..75c7d9b49a21230031ecb838dd710a94074bc734 100644 --- a/lib/manager/maven/index.spec.ts +++ b/lib/manager/maven/index.spec.ts @@ -61,7 +61,10 @@ describe('manager/maven', () => { const { deps } = extractPackage(pomContent); const dep = selectDep(deps); const upgrade = { ...dep, newValue }; - const updatedContent = updateDependency(pomContent, upgrade); + const updatedContent = updateDependency({ + fileContent: pomContent, + upgrade, + }); const updatedDep = selectDep(extractPackage(updatedContent).deps); expect(updatedDep.currentValue).toEqual(newValue); @@ -79,7 +82,10 @@ describe('manager/maven', () => { const [{ deps }] = packages; const dep = deps.find(finder); const upgrade = { ...dep, newValue }; - const updatedContent = updateDependency(pomParent, upgrade); + const updatedContent = updateDependency({ + fileContent: pomParent, + upgrade, + }); const [updatedPkg] = resolveParents([ extractPackage(updatedContent, 'parent.pom.xml'), extractPackage(pomChild, 'child.pom.xml'), @@ -117,7 +123,10 @@ describe('manager/maven', () => { const { deps } = extractPackage(pomContent); const dep = selectDep(deps); const upgrade = { ...dep, newValue }; - const updatedContent = updateDependency(pomContent, upgrade); + const updatedContent = updateDependency({ + fileContent: pomContent, + upgrade, + }); expect(pomContent).toBe(updatedContent); }); @@ -134,25 +143,37 @@ describe('manager/maven', () => { const updatedOutside = origContent.replace('1.0.0', '1.0.1'); - expect(updateDependency(origContent, upgrade1)).toEqual( - origContent.replace('1.0.0', '1.0.2') - ); - expect(updateDependency(updatedOutside, upgrade1)).toEqual( - origContent.replace('1.0.0', '1.0.2') - ); - - const updatedByPrevious = updateDependency(origContent, upgrade1); - - expect(updateDependency(updatedByPrevious, upgrade2)).toEqual( - origContent.replace('1.0.0', '1.0.3') - ); - expect(updateDependency(updatedOutside, upgrade2)).toEqual( - origContent.replace('1.0.0', '1.0.3') - ); + expect( + updateDependency({ fileContent: origContent, upgrade: upgrade1 }) + ).toEqual(origContent.replace('1.0.0', '1.0.2')); + expect( + updateDependency({ + fileContent: updatedOutside, + upgrade: upgrade1, + }) + ).toEqual(origContent.replace('1.0.0', '1.0.2')); + + const updatedByPrevious = updateDependency({ + fileContent: origContent, + upgrade: upgrade1, + }); - expect(updateDependency(origContent, upgrade2)).toEqual( - origContent.replace('1.0.0', '1.0.3') - ); + expect( + updateDependency({ + fileContent: updatedByPrevious, + upgrade: upgrade2, + }) + ).toEqual(origContent.replace('1.0.0', '1.0.3')); + expect( + updateDependency({ + fileContent: updatedOutside, + upgrade: upgrade2, + }) + ).toEqual(origContent.replace('1.0.0', '1.0.3')); + + expect( + updateDependency({ fileContent: origContent, upgrade: upgrade2 }) + ).toEqual(origContent.replace('1.0.0', '1.0.3')); }); it('should return null for ungrouped deps if content was updated outside', async () => { @@ -161,7 +182,9 @@ describe('manager/maven', () => { const dep = selectDep(deps, 'org.example:bar'); const upgrade = { ...dep, newValue: '2.0.2' }; const updatedOutside = origContent.replace('2.0.0', '2.0.1'); - expect(updateDependency(updatedOutside, upgrade)).toBeNull(); + expect( + updateDependency({ fileContent: updatedOutside, upgrade }) + ).toBeNull(); }); it('should return null if current versions in content and upgrade are not same', () => { @@ -171,7 +194,10 @@ describe('manager/maven', () => { const { deps } = extractPackage(pomContent); const dep = selectDep(deps); const upgrade = { ...dep, currentValue, newValue }; - const updatedContent = updateDependency(pomContent, upgrade); + const updatedContent = updateDependency({ + fileContent: pomContent, + upgrade, + }); expect(updatedContent).toBeNull(); }); @@ -182,7 +208,9 @@ describe('manager/maven', () => { const oldContent = extractPackage(pomContent); const dep = select(oldContent); const upgrade = { ...dep, newValue }; - const newContent = extractPackage(updateDependency(pomContent, upgrade)); + const newContent = extractPackage( + updateDependency({ fileContent: pomContent, upgrade }) + ); const newDep = select(newContent); expect(newDep.currentValue).toEqual(newValue); }); @@ -196,7 +224,9 @@ describe('manager/maven', () => { const dep = select(oldContent); expect(dep).not.toEqual(null); const upgrade = { ...dep, newValue }; - expect(updateDependency(pomContent, upgrade)).toEqual(pomContent); + expect(updateDependency({ fileContent: pomContent, upgrade })).toEqual( + pomContent + ); }); }); }); diff --git a/lib/manager/maven/update.ts b/lib/manager/maven/update.ts index c25dab1eb629ccb76d487e944a88c07a3c23f810..18526fd0b6e03c7c715db24a33490dd96e2c2d6b 100644 --- a/lib/manager/maven/update.ts +++ b/lib/manager/maven/update.ts @@ -1,5 +1,5 @@ import { logger } from '../../logger'; -import { Upgrade } from '../common'; +import { UpdateDependencyConfig, Upgrade } from '../common'; export function updateAtPosition( fileContent: string, @@ -24,10 +24,10 @@ export function updateAtPosition( return null; } -export function updateDependency( - fileContent: string, - upgrade: Upgrade -): string | null { +export function updateDependency({ + fileContent, + upgrade, +}: UpdateDependencyConfig): string | null { const offset = fileContent.indexOf('<'); const spaces = fileContent.slice(0, offset); const restContent = fileContent.slice(offset); diff --git a/lib/manager/meteor/update.spec.ts b/lib/manager/meteor/update.spec.ts index 1f00b68a540d3ee385c714d39c8c24e35aba3bd6..81a11e22765096fb2a7cb1e1d6d3948836514fb1 100644 --- a/lib/manager/meteor/update.spec.ts +++ b/lib/manager/meteor/update.spec.ts @@ -17,7 +17,10 @@ describe('workers/branch/package-js', () => { currentValue: '0.1.19', newValue: '0.22.1', }; - const testContent = updateDependency(input01Content, upgrade); + const testContent = updateDependency({ + fileContent: input01Content, + upgrade, + }); expect(testContent).toMatchSnapshot(); }); it('handles alternative quotes and white space', () => { @@ -26,7 +29,10 @@ describe('workers/branch/package-js', () => { currentValue: '0.1.19', newValue: '0.22.1', }; - const testContent = updateDependency(input02Content, upgrade); + const testContent = updateDependency({ + fileContent: input02Content, + upgrade, + }); expect(testContent).toMatchSnapshot(); }); it('handles the case where the desired version is already supported', () => { @@ -35,7 +41,10 @@ describe('workers/branch/package-js', () => { currentValue: '0.2.0', newValue: '0.2.0', }; - const testContent = updateDependency(input01Content, upgrade); + const testContent = updateDependency({ + fileContent: input01Content, + upgrade, + }); expect(testContent).toEqual(input01Content); }); }); diff --git a/lib/manager/meteor/update.ts b/lib/manager/meteor/update.ts index c84a535bce50db11e4c6d5fbedcbb80107fed5d8..dea549a5b94d0ef543d06eafb3d6cb7cbc58acbe 100644 --- a/lib/manager/meteor/update.ts +++ b/lib/manager/meteor/update.ts @@ -1,10 +1,10 @@ import { logger } from '../../logger'; -import { Upgrade } from '../common'; +import { UpdateDependencyConfig } from '../common'; -export function updateDependency( - fileContent: string, - upgrade: Upgrade -): string { +export function updateDependency({ + fileContent, + upgrade, +}: UpdateDependencyConfig): string { const { depName, currentValue, newValue } = upgrade; logger.debug(`meteor.updateDependency(): ${depName} = ${newValue}`); const regexReplace = new RegExp( diff --git a/lib/manager/mix/update.spec.ts b/lib/manager/mix/update.spec.ts index 1ecd8425b5c56e2212818add33d6a6ed2cceae77..12885902a8a1348bf117cd3c7a4b9c0cf7826be1 100644 --- a/lib/manager/mix/update.spec.ts +++ b/lib/manager/mix/update.spec.ts @@ -15,7 +15,7 @@ describe('lib/manager/mix/update', () => { managerData: { lineNumber: 18 }, newValue: '~> 0.8.2', }; - const res = updateDependency(sample, upgrade); + const res = updateDependency({ fileContent: sample, upgrade }); expect(res).not.toEqual(sample); expect(res.includes(upgrade.newValue)).toBe(true); }); @@ -25,7 +25,7 @@ describe('lib/manager/mix/update', () => { managerData: { lineNumber: 18 }, newValue: '~> 0.8.1', }; - const res = updateDependency(sample, upgrade); + const res = updateDependency({ fileContent: sample, upgrade }); expect(res).toEqual(sample); }); it('returns null if wrong line', () => { @@ -34,7 +34,7 @@ describe('lib/manager/mix/update', () => { managerData: { lineNumber: 19 }, newValue: '~> 0.8.2', }; - const res = updateDependency(sample, upgrade); + const res = updateDependency({ fileContent: sample, upgrade }); expect(res).toBeNull(); }); it('returns null for unsupported depType', () => { @@ -43,7 +43,7 @@ describe('lib/manager/mix/update', () => { managerData: { lineNumber: 19 }, newValue: '~> 0.8.2', }; - const res = updateDependency(sample, upgrade); + const res = updateDependency({ fileContent: sample, upgrade }); expect(res).toBeNull(); }); }); diff --git a/lib/manager/mix/update.ts b/lib/manager/mix/update.ts index c4922fb0ee469cdee5d56a7628c7355f7d41208e..bb5a6530ba41dc1c0344871b05cc52926d621f3b 100644 --- a/lib/manager/mix/update.ts +++ b/lib/manager/mix/update.ts @@ -1,10 +1,10 @@ import { logger } from '../../logger'; -import { Upgrade } from '../common'; +import { UpdateDependencyConfig } from '../common'; -export function updateDependency( - fileContent: string, - upgrade: Upgrade -): string | null { +export function updateDependency({ + fileContent, + upgrade, +}: UpdateDependencyConfig): string | null { logger.debug(`mix.updateDependency: ${upgrade.newValue}`); const lines = fileContent.split('\n'); diff --git a/lib/manager/npm/update.spec.ts b/lib/manager/npm/update.spec.ts index 98354a07408add9616d1a6a74a77f59614edd451..69febbf05e440cfa0f06023ed0dd01aad5c94866 100644 --- a/lib/manager/npm/update.spec.ts +++ b/lib/manager/npm/update.spec.ts @@ -21,7 +21,10 @@ describe('workers/branch/package-json', () => { newValue: '0.22.1', }; const outputContent = readFixture('outputs/011.json'); - const testContent = npmUpdater.updateDependency(input01Content, upgrade); + const testContent = npmUpdater.updateDependency({ + fileContent: input01Content, + upgrade, + }); expect(testContent).toEqual(outputContent); }); it('replaces a github dependency value', () => { @@ -37,7 +40,10 @@ describe('workers/branch/package-json', () => { gulp: 'gulpjs/gulp#v4.0.0-alpha.2', }, }); - const res = npmUpdater.updateDependency(input, upgrade); + const res = npmUpdater.updateDependency({ + fileContent: input, + upgrade, + }); expect(res).toMatchSnapshot(); }); it('replaces a npm package alias', () => { @@ -54,7 +60,10 @@ describe('workers/branch/package-json', () => { hapi: 'npm:@hapi/hapi@18.3.0', }, }); - const res = npmUpdater.updateDependency(input, upgrade); + const res = npmUpdater.updateDependency({ + fileContent: input, + upgrade, + }); expect(res).toMatchSnapshot(); }); it('replaces a github short hash', () => { @@ -70,7 +79,10 @@ describe('workers/branch/package-json', () => { gulp: 'gulpjs/gulp#abcdef7', }, }); - const res = npmUpdater.updateDependency(input, upgrade); + const res = npmUpdater.updateDependency({ + fileContent: input, + upgrade, + }); expect(res).toMatchSnapshot(); }); it('replaces a github fully specified version', () => { @@ -86,7 +98,10 @@ describe('workers/branch/package-json', () => { n: 'git+https://github.com/owner/n#v1.0.0', }, }); - const res = npmUpdater.updateDependency(input, upgrade); + const res = npmUpdater.updateDependency({ + fileContent: input, + upgrade, + }); expect(res).toMatchSnapshot(); expect(res.includes('v1.1.0')).toBe(true); }); @@ -96,7 +111,10 @@ describe('workers/branch/package-json', () => { depName: 'config', newValue: '1.22.0', }; - const testContent = npmUpdater.updateDependency(input01Content, upgrade); + const testContent = npmUpdater.updateDependency({ + fileContent: input01Content, + upgrade, + }); expect(JSON.parse(testContent).dependencies.config).toEqual('1.22.0'); expect(JSON.parse(testContent).resolutions.config).toEqual('1.22.0'); }); @@ -106,10 +124,10 @@ describe('workers/branch/package-json', () => { depName: 'config', newValue: '1.22.0', }; - const testContent = npmUpdater.updateDependency( - input01GlobContent, - upgrade - ); + const testContent = npmUpdater.updateDependency({ + fileContent: input01GlobContent, + upgrade, + }); expect(JSON.parse(testContent).dependencies.config).toEqual('1.22.0'); expect(JSON.parse(testContent).resolutions['**/config']).toEqual( '1.22.0' @@ -122,7 +140,10 @@ describe('workers/branch/package-json', () => { newValue: '1.6.1', }; const outputContent = readFixture('outputs/012.json'); - const testContent = npmUpdater.updateDependency(input01Content, upgrade); + const testContent = npmUpdater.updateDependency({ + fileContent: input01Content, + upgrade, + }); expect(testContent).toEqual(outputContent); }); it('replaces only the second instance of a value', () => { @@ -132,7 +153,10 @@ describe('workers/branch/package-json', () => { newValue: '1.6.1', }; const outputContent = readFixture('outputs/013.json'); - const testContent = npmUpdater.updateDependency(input01Content, upgrade); + const testContent = npmUpdater.updateDependency({ + fileContent: input01Content, + upgrade, + }); expect(testContent).toEqual(outputContent); }); it('handles the case where the desired version is already supported', () => { @@ -141,7 +165,10 @@ describe('workers/branch/package-json', () => { depName: 'angular-touch', newValue: '1.5.8', }; - const testContent = npmUpdater.updateDependency(input01Content, upgrade); + const testContent = npmUpdater.updateDependency({ + fileContent: input01Content, + upgrade, + }); expect(testContent).toEqual(input01Content); }); it('returns null if throws error', () => { @@ -150,7 +177,10 @@ describe('workers/branch/package-json', () => { depName: 'angular-touch-not', newValue: '1.5.8', }; - const testContent = npmUpdater.updateDependency(input01Content, upgrade); + const testContent = npmUpdater.updateDependency({ + fileContent: input01Content, + upgrade, + }); expect(testContent).toBeNull(); }); }); diff --git a/lib/manager/npm/update.ts b/lib/manager/npm/update.ts index c24b044236e3258b3076e51987a9d0104eb9e53c..74f5080d48e80c94f1ccae399fad2a757115fbda 100644 --- a/lib/manager/npm/update.ts +++ b/lib/manager/npm/update.ts @@ -1,7 +1,7 @@ import { isEqual } from 'lodash'; import { inc, ReleaseType } from 'semver'; import { logger } from '../../logger'; -import { Upgrade } from '../common'; +import { UpdateDependencyConfig } from '../common'; // Return true if the match string is found at index in content function matchAt(content: string, index: number, match: string): boolean { @@ -76,10 +76,10 @@ export function bumpPackageVersion( } } -export function updateDependency( - fileContent: string, - upgrade: Upgrade -): string | null { +export function updateDependency({ + fileContent, + upgrade, +}: UpdateDependencyConfig): string | null { const { depType, depName } = upgrade; let { newValue } = upgrade; if (upgrade.currentRawValue) { diff --git a/lib/manager/nuget/update.spec.ts b/lib/manager/nuget/update.spec.ts index a829cb806bc623f63b6f5e2c067b630deb6af305..71cad62857149acc24ae208313ff2c5ea6f506eb 100644 --- a/lib/manager/nuget/update.spec.ts +++ b/lib/manager/nuget/update.spec.ts @@ -13,7 +13,7 @@ describe('manager/nuget/update', () => { managerData: { lineNumber: 13 }, newVersion: '5.0.0', }; - const res = updateDependency(csProj, upgrade); + const res = updateDependency({ fileContent: csProj, upgrade }); expect(res).not.toEqual(csProj); }); it('replaces left boundary value', () => { @@ -23,7 +23,7 @@ describe('manager/nuget/update', () => { managerData: { lineNumber: i }, newVersion: i + '.2.1', }; - res = updateDependency(res, upgrade); + res = updateDependency({ fileContent: res, upgrade }); } expect(res).toMatchSnapshot(); }); @@ -32,11 +32,14 @@ describe('manager/nuget/update', () => { managerData: { lineNumber: 13 }, newVersion: '4.1.0', }; - const res = updateDependency(csProj, upgrade); + const res = updateDependency({ fileContent: csProj, upgrade }); expect(res).toEqual(csProj); }); it('returns null on errors', () => { - const res = updateDependency(csProj, null); + const res = updateDependency({ + fileContent: csProj, + upgrade: null, + }); expect(res).toBeNull(); }); }); diff --git a/lib/manager/nuget/update.ts b/lib/manager/nuget/update.ts index 6a45c45aa872006d8fab370704bfe7d1aabfbaa1..8051c960719378199251227e6265839548744592 100644 --- a/lib/manager/nuget/update.ts +++ b/lib/manager/nuget/update.ts @@ -1,10 +1,10 @@ import { logger } from '../../logger'; -import { Upgrade } from '../common'; +import { UpdateDependencyConfig } from '../common'; -export function updateDependency( - fileContent: string, - upgrade: Upgrade -): string | null { +export function updateDependency({ + fileContent, + upgrade, +}: UpdateDependencyConfig): string | null { try { logger.debug(`nuget.updateDependency(): ${upgrade.newFrom}`); const lines = fileContent.split('\n'); diff --git a/lib/manager/nvm/update.spec.ts b/lib/manager/nvm/update.spec.ts index a12cd2f71a8cd4cba23ec6888ba5e60a4d0d035a..4327bac986cdf2aebd7e308399054e2a774a9a10 100644 --- a/lib/manager/nvm/update.spec.ts +++ b/lib/manager/nvm/update.spec.ts @@ -6,7 +6,7 @@ describe('manager/nvm/update', () => { const upgrade = { newValue: '8.9.1', }; - const res = updateDependency('8.9.0\n', upgrade); + const res = updateDependency({ fileContent: '8.9.0\n', upgrade }); expect(res).toMatchSnapshot(); }); }); diff --git a/lib/manager/nvm/update.ts b/lib/manager/nvm/update.ts index 0ad7ac1ada89fc5b2ba62c0548995e97a41f171a..7707618cf4d4caa5f5bc7b144faf299933166e02 100644 --- a/lib/manager/nvm/update.ts +++ b/lib/manager/nvm/update.ts @@ -1,10 +1,7 @@ import { logger } from '../../logger'; -import { Upgrade } from '../common'; +import { UpdateDependencyConfig } from '../common'; -export function updateDependency( - _fileContent: string, - upgrade: Upgrade -): string { +export function updateDependency({ upgrade }: UpdateDependencyConfig): string { logger.debug(`nvm.updateDependency(): ${upgrade.newVersion}`); return `${upgrade.newValue}\n`; } diff --git a/lib/manager/pip_requirements/update.spec.ts b/lib/manager/pip_requirements/update.spec.ts index 69b85f9af12e6d100b883220329efb2e540ee4b1..19a31a0030e7c2683463b36f91c4b2a065c8fb34 100644 --- a/lib/manager/pip_requirements/update.spec.ts +++ b/lib/manager/pip_requirements/update.spec.ts @@ -34,13 +34,16 @@ describe('manager/pip_requirements/update', () => { managerData: { lineNumber: 2 }, newValue: '==1.0.1', }; - const res = updateDependency(requirements, upgrade); + const res = updateDependency({ + fileContent: requirements, + upgrade, + }); expect(res).toMatchSnapshot(); expect(res).not.toEqual(requirements); expect(res.includes(upgrade.newValue)).toBe(true); }); it('returns null if error', () => { - const res = updateDependency(null, null); + const res = updateDependency({ fileContent: null, upgrade: null }); expect(res).toBeNull(); }); it('replaces existing value with comment', () => { @@ -49,7 +52,10 @@ describe('manager/pip_requirements/update', () => { managerData: { lineNumber: 3 }, newValue: '==2.4.6', }; - const res = updateDependency(requirements3, upgrade); + const res = updateDependency({ + fileContent: requirements3, + upgrade, + }); expect(res).toMatchSnapshot(); expect(res).not.toEqual(requirements3); expect(res.includes(upgrade.newValue)).toBe(true); @@ -61,7 +67,10 @@ describe('manager/pip_requirements/update', () => { managerData: { lineNumber: 1 }, newValue: '==4.1.2', }; - const res = updateDependency(requirements4, upgrade); + const res = updateDependency({ + fileContent: requirements4, + upgrade, + }); expect(res).toMatchSnapshot(); expect(res).not.toEqual(requirements4); expect(res.includes(upgrade.newValue)).toBe(true); @@ -72,7 +81,7 @@ describe('manager/pip_requirements/update', () => { managerData: { lineNumber: 64 }, newValue: '>=2.11.0', }; - const res = updateDependency(setupPy1, upgrade); + const res = updateDependency({ fileContent: setupPy1, upgrade }); expect(res).toMatchSnapshot(); expect(res).not.toEqual(setupPy1); expect(res.includes(upgrade.newValue)).toBe(true); @@ -83,7 +92,7 @@ describe('manager/pip_requirements/update', () => { managerData: { lineNumber: 60 }, newValue: '==3.8.0', }; - const res = updateDependency(setupPy2, upgrade); + const res = updateDependency({ fileContent: setupPy2, upgrade }); expect(res).toMatchSnapshot(); expect(res).not.toEqual(setupPy2); const expectedUpdate = diff --git a/lib/manager/pip_requirements/update.ts b/lib/manager/pip_requirements/update.ts index f8e72635328b13518fadd08f91e8342fa46d46e2..6cbecf2a4d8b14ef4a706a4d8102081c15e0e396 100644 --- a/lib/manager/pip_requirements/update.ts +++ b/lib/manager/pip_requirements/update.ts @@ -1,11 +1,11 @@ import { logger } from '../../logger'; import { dependencyPattern } from './extract'; -import { Upgrade } from '../common'; +import { UpdateDependencyConfig } from '../common'; -export function updateDependency( - fileContent: string, - upgrade: Upgrade -): string | null { +export function updateDependency({ + fileContent, + upgrade, +}: UpdateDependencyConfig): string | null { try { logger.debug(`pip_requirements.updateDependency(): ${upgrade.newValue}`); const lines = fileContent.split('\n'); diff --git a/lib/manager/pipenv/update.spec.ts b/lib/manager/pipenv/update.spec.ts index abff9663d1f3ae99458544b8ef7852a0065efc1b..52a55ef1bd51496c47c00f98f6d93e5cd48a86a6 100644 --- a/lib/manager/pipenv/update.spec.ts +++ b/lib/manager/pipenv/update.spec.ts @@ -14,7 +14,7 @@ describe('manager/pipenv/update', () => { newValue: '==1.0.1', depType: 'packages', }; - const res = updateDependency(pipfile, upgrade); + const res = updateDependency({ fileContent: pipfile, upgrade }); expect(res).not.toEqual(pipfile); expect(res.includes(upgrade.newValue)).toBe(true); expect(res).toMatchSnapshot(); @@ -25,7 +25,7 @@ describe('manager/pipenv/update', () => { newValue: '==0.3.1', depType: 'packages', }; - const res = updateDependency(pipfile, upgrade); + const res = updateDependency({ fileContent: pipfile, upgrade }); expect(res).toEqual(pipfile); }); it('replaces nested value', () => { @@ -35,7 +35,7 @@ describe('manager/pipenv/update', () => { depType: 'packages', managerData: { nestedVersion: true }, }; - const res = updateDependency(pipfile, upgrade); + const res = updateDependency({ fileContent: pipfile, upgrade }); expect(res).not.toEqual(pipfile); expect(res.includes(upgrade.newValue)).toBe(true); expect(res).toMatchSnapshot(); @@ -46,13 +46,13 @@ describe('manager/pipenv/update', () => { newValue: '==0.2.0', depType: 'dev-packages', }; - const res = updateDependency(pipfile, upgrade); + const res = updateDependency({ fileContent: pipfile, upgrade }); expect(res).not.toEqual(pipfile); expect(res.includes(upgrade.newValue)).toBe(true); expect(res).toMatchSnapshot(); }); it('returns null if error', () => { - const res = updateDependency(null, null); + const res = updateDependency({ fileContent: null, upgrade: null }); expect(res).toBeNull(); }); }); diff --git a/lib/manager/pipenv/update.ts b/lib/manager/pipenv/update.ts index b3450a6bee3fe18902a19da60ab030c6cec955ef..bf869158173899770fc52801b53c6d5cd29ddb81 100644 --- a/lib/manager/pipenv/update.ts +++ b/lib/manager/pipenv/update.ts @@ -1,7 +1,7 @@ import { isEqual } from 'lodash'; import { parse } from 'toml'; import { logger } from '../../logger'; -import { Upgrade } from '../common'; +import { UpdateDependencyConfig } from '../common'; // Return true if the match string is found at index in content function matchAt(content: string, index: number, match: string): boolean { @@ -23,10 +23,10 @@ function replaceAt( ); } -export function updateDependency( - fileContent: string, - upgrade: Upgrade -): string | null { +export function updateDependency({ + fileContent, + upgrade, +}: UpdateDependencyConfig): string | null { try { const { depType, depName, newValue, managerData = {} } = upgrade; const { nestedVersion } = managerData; diff --git a/lib/manager/poetry/update.spec.ts b/lib/manager/poetry/update.spec.ts index bd93f6ba603d45426481248a29bea2afb0053981..4871e2cfb300d046841b3382da8dad5e45bda802 100644 --- a/lib/manager/poetry/update.spec.ts +++ b/lib/manager/poetry/update.spec.ts @@ -20,7 +20,10 @@ describe('manager/poetry/update', () => { newValue: '1.0.0', managerData: { nestedVersion: false }, }; - const res = updateDependency(pyproject1toml, upgrade); + const res = updateDependency({ + fileContent: pyproject1toml, + upgrade, + }); expect(res).not.toEqual(pyproject1toml); expect(res.includes(upgrade.newValue)).toBe(true); expect(res).toMatchSnapshot(); @@ -32,7 +35,10 @@ describe('manager/poetry/update', () => { newValue: '0.0.0', managerData: { nestedVersion: false }, }; - const res = updateDependency(pyproject1toml, upgrade); + const res = updateDependency({ + fileContent: pyproject1toml, + upgrade, + }); expect(res).toEqual(pyproject1toml); }); it('replaces nested value', () => { @@ -42,7 +48,10 @@ describe('manager/poetry/update', () => { newValue: '1.0.0', managerData: { nestedVersion: true }, }; - const res = updateDependency(pyproject2toml, upgrade); + const res = updateDependency({ + fileContent: pyproject2toml, + upgrade, + }); expect(res).not.toEqual(pyproject2toml); expect(res.includes(upgrade.newValue)).toBe(true); expect(res).toMatchSnapshot(); @@ -54,19 +63,25 @@ describe('manager/poetry/update', () => { newValue: '1.0.0', managerData: { nestedVersion: true }, }; - const res = updateDependency(pyproject2toml, upgrade); + const res = updateDependency({ + fileContent: pyproject2toml, + upgrade, + }); expect(res).not.toEqual(pyproject2toml); expect(res.includes(upgrade.newValue)).toBe(true); expect(res).toMatchSnapshot(); }); - it('gracefully handles nested value for path dependency withou version field', () => { + it('gracefully handles nested value for path dependency without version field', () => { const upgrade = { depName: 'dep4', depType: 'dependencies', newValue: '1.0.0', managerData: { nestedVersion: true }, }; - const res = updateDependency(pyproject2toml, upgrade); + const res = updateDependency({ + fileContent: pyproject1toml, + upgrade, + }); expect(res).toBeNull(); }); it('upgrades extras', () => { @@ -76,7 +91,10 @@ describe('manager/poetry/update', () => { newValue: '1.0.0', managerData: { nestedVersion: false }, }; - const res = updateDependency(pyproject1toml, upgrade); + const res = updateDependency({ + fileContent: pyproject1toml, + upgrade, + }); expect(res).not.toEqual(pyproject1toml); expect(res.includes(upgrade.newValue)).toBe(true); expect(res).toMatchSnapshot(); @@ -88,13 +106,16 @@ describe('manager/poetry/update', () => { newValue: '1.0.0', managerData: { nestedVersion: false }, }; - const res = updateDependency(pyproject1toml, upgrade); + const res = updateDependency({ + fileContent: pyproject1toml, + upgrade, + }); expect(res).not.toEqual(pyproject1toml); expect(res.includes(upgrade.newValue)).toBe(true); expect(res).toMatchSnapshot(); }); it('returns null if upgrade is null', () => { - const res = updateDependency(null, null); + const res = updateDependency({ fileContent: null, upgrade: null }); expect(res).toBeNull(); }); it('handles nonexistent depType gracefully', () => { @@ -104,7 +125,10 @@ describe('manager/poetry/update', () => { newValue: '1.0.0', managerData: { nestedVersion: false }, }; - const res = updateDependency(pyproject1toml, upgrade); + const res = updateDependency({ + fileContent: pyproject1toml, + upgrade, + }); expect(res).toBeNull(); }); it('handles nonexistent depType gracefully', () => { @@ -114,7 +138,10 @@ describe('manager/poetry/update', () => { newValue: '1.0.0', managerData: { nestedVersion: false }, }; - const res = updateDependency(pyproject2toml, upgrade); + const res = updateDependency({ + fileContent: pyproject2toml, + upgrade, + }); expect(res).toBeNull(); }); it('handles nonexistent depName gracefully', () => { @@ -124,7 +151,10 @@ describe('manager/poetry/update', () => { newValue: '1.0.0', managerData: { nestedVersion: false }, }; - const res = updateDependency(pyproject1toml, upgrade); + const res = updateDependency({ + fileContent: pyproject1toml, + upgrade, + }); expect(res).toBeNull(); }); it('handles nonexistent depName with nested value gracefully', () => { @@ -134,7 +164,10 @@ describe('manager/poetry/update', () => { managerData: { nestedVersion: true }, newValue: '1.0.0', }; - const res = updateDependency(pyproject2toml, upgrade); + const res = updateDependency({ + fileContent: pyproject2toml, + upgrade, + }); expect(res).toBeNull(); }); }); diff --git a/lib/manager/poetry/update.ts b/lib/manager/poetry/update.ts index 9d2c9d135d1be69ce74bb9bd1f58e05b2cb10207..0b141e7be502f47bc742fe80f6c918029341eb44 100644 --- a/lib/manager/poetry/update.ts +++ b/lib/manager/poetry/update.ts @@ -1,7 +1,7 @@ import { isEqual } from 'lodash'; import { parse } from 'toml'; import { logger } from '../../logger'; -import { Upgrade } from '../common'; +import { UpdateDependencyConfig } from '../common'; import { PoetryFile } from './types'; // TODO: Maybe factor out common code from pipenv.updateDependency and poetry.updateDependency @@ -30,10 +30,10 @@ function replaceAt( ); } -export function updateDependency( - fileContent: string, - upgrade: Upgrade<{ nestedVersion?: boolean }> -): string | null { +export function updateDependency({ + fileContent, + upgrade, +}: UpdateDependencyConfig): string | null { logger.trace({ config: upgrade }, 'poetry.updateDependency()'); if (!upgrade) { return null; diff --git a/lib/manager/pub/update.spec.ts b/lib/manager/pub/update.spec.ts index 532557c5e11f9d653b560a09179ef777ac91dde4..0949e38da580b3cfe4b60e5fdc09f6cf3cb6ef5f 100644 --- a/lib/manager/pub/update.spec.ts +++ b/lib/manager/pub/update.spec.ts @@ -15,24 +15,30 @@ describe('manager/pub/update', () => { newValue: '1', depType: 'dependencies', }; - const res = updateDependency(fileContent, upgrade); + const res = updateDependency({ fileContent, upgrade }); expect(res).toEqual(fileContent); }); it('returns null if content was updated', () => { expect( - updateDependency(fileContent, { - depName: 'test', - currentValue: '0.0.1', - newValue: '1', - depType: 'dev_dependencies', + updateDependency({ + fileContent, + upgrade: { + depName: 'test', + currentValue: '0.0.1', + newValue: '1', + depType: 'dev_dependencies', + }, }) ).toBe(null); expect( - updateDependency(fileContent, { - depName: 'build', - currentValue: '0.0.1', - newValue: '1', - depType: 'dev_dependencies', + updateDependency({ + fileContent, + upgrade: { + depName: 'build', + currentValue: '0.0.1', + newValue: '1', + depType: 'dev_dependencies', + }, }) ).toBe(null); }); @@ -43,7 +49,7 @@ describe('manager/pub/update', () => { newValue: '1.2.3', depType: 'dependencies', }; - const res = updateDependency(fileContent, upgrade); + const res = updateDependency({ fileContent, upgrade }); expect(res).not.toEqual(fileContent); expect(res.includes(upgrade.newValue)).toBe(true); expect(res).toMatchSnapshot(); @@ -55,7 +61,7 @@ describe('manager/pub/update', () => { newValue: '1.2.3', depType: 'dependencies', }; - const res = updateDependency(fileContent, upgrade); + const res = updateDependency({ fileContent, upgrade }); expect(res).not.toEqual(fileContent); expect(res.includes(upgrade.newValue)).toBe(true); expect(res).toMatchSnapshot(); diff --git a/lib/manager/pub/update.ts b/lib/manager/pub/update.ts index 547c9eaa6496ad5286c55e67b7de9f9e91efb7ce..1e0929bc37daaa81455ab60da0be7d85deab5ebd 100644 --- a/lib/manager/pub/update.ts +++ b/lib/manager/pub/update.ts @@ -1,10 +1,10 @@ import { load } from 'js-yaml'; -import { Upgrade } from '../common'; +import { UpdateDependencyConfig } from '../common'; -export function updateDependency( - fileContent: string, - upgrade: Upgrade -): string { +export function updateDependency({ + fileContent, + upgrade, +}: UpdateDependencyConfig): string { const { depName, depType, currentValue, newValue } = upgrade; if (currentValue === newValue) return fileContent; diff --git a/lib/manager/ruby-version/update.spec.ts b/lib/manager/ruby-version/update.spec.ts index a12cd2f71a8cd4cba23ec6888ba5e60a4d0d035a..4327bac986cdf2aebd7e308399054e2a774a9a10 100644 --- a/lib/manager/ruby-version/update.spec.ts +++ b/lib/manager/ruby-version/update.spec.ts @@ -6,7 +6,7 @@ describe('manager/nvm/update', () => { const upgrade = { newValue: '8.9.1', }; - const res = updateDependency('8.9.0\n', upgrade); + const res = updateDependency({ fileContent: '8.9.0\n', upgrade }); expect(res).toMatchSnapshot(); }); }); diff --git a/lib/manager/ruby-version/update.ts b/lib/manager/ruby-version/update.ts index 3734bf268bbbb422df2687c07c2154b455fa6227..41fddb95f1ac594f3966351051cf51881f9d303e 100644 --- a/lib/manager/ruby-version/update.ts +++ b/lib/manager/ruby-version/update.ts @@ -1,10 +1,7 @@ import { logger } from '../../logger'; -import { Upgrade } from '../common'; +import { UpdateDependencyConfig } from '../common'; -export function updateDependency( - _fileContent: string, - upgrade: Upgrade -): string { +export function updateDependency({ upgrade }: UpdateDependencyConfig): string { logger.debug(`ruby-version.updateDependency(): ${upgrade.newValue}`); return `${upgrade.newValue}\n`; } diff --git a/lib/manager/swift/index.spec.ts b/lib/manager/swift/index.spec.ts index ae038abb6d7e1177e69743b0d585109b76ae36e8..815035803dd0bf39bb8a09da224a490be3382400 100644 --- a/lib/manager/swift/index.spec.ts +++ b/lib/manager/swift/index.spec.ts @@ -172,7 +172,10 @@ describe('lib/manager/swift', () => { const { deps } = extractPackageFile(content); const [dep] = deps; const upgrade = { ...dep, newValue }; - const updated = updateDependency(content, upgrade); + const updated = updateDependency({ + fileContent: content, + upgrade, + }); expect(updated).toEqual(result); }); }); @@ -185,7 +188,10 @@ describe('lib/manager/swift', () => { const [dep] = deps; const upgrade = { ...dep, newValue }; const replaced = content.replace(currentValue, newValue); - const updated = updateDependency(replaced, upgrade); + const updated = updateDependency({ + fileContent: replaced, + upgrade, + }); expect(updated).toBe(replaced); }); it('returns null if content is different', () => { @@ -197,7 +203,7 @@ describe('lib/manager/swift', () => { const [dep] = deps; const upgrade = { ...dep, newValue }; const replaced = content.replace(currentValue, '1.2.5'); - expect(updateDependency(replaced, upgrade)).toBe(null); + expect(updateDependency({ fileContent: replaced, upgrade })).toBe(null); }); }); }); diff --git a/lib/manager/swift/update.ts b/lib/manager/swift/update.ts index e6a6e49dbcc1337fbfa809406077311576f2a0b3..6700cec41c72166a433e7d97173a13f5d9a4254a 100644 --- a/lib/manager/swift/update.ts +++ b/lib/manager/swift/update.ts @@ -1,12 +1,12 @@ import { isVersion } from '../../versioning/swift'; -import { Upgrade } from '../common'; +import { UpdateDependencyConfig } from '../common'; const fromParam = /^\s*from\s*:\s*"([^"]+)"\s*$/; -export function updateDependency( - fileContent: string, - upgrade: Upgrade -): string | null { +export function updateDependency({ + fileContent, + upgrade, +}: UpdateDependencyConfig): string | null { const { currentValue, newValue, fileReplacePosition } = upgrade; const leftPart = fileContent.slice(0, fileReplacePosition); const rightPart = fileContent.slice(fileReplacePosition); diff --git a/lib/manager/terraform/update.spec.ts b/lib/manager/terraform/update.spec.ts index 1d62c338250482bbc58dd9e2715c57ea2805e97b..93345d8b1fa9ff02c83ca7211f9b8b88ccced6df 100644 --- a/lib/manager/terraform/update.spec.ts +++ b/lib/manager/terraform/update.spec.ts @@ -13,7 +13,7 @@ describe('manager/terraform/update', () => { depNameShort: 'hashicorp/example', newValue: 'v1.0.1', }; - const res = updateDependency(tf1, upgrade); + const res = updateDependency({ fileContent: tf1, upgrade }); expect(res).not.toEqual(tf1); expect(res.includes(upgrade.newValue)).toBe(true); }); @@ -25,7 +25,7 @@ describe('manager/terraform/update', () => { depNameShort: 'hashicorp/example', newValue: 'v1.0.0', }; - const res = updateDependency(tf1, upgrade); + const res = updateDependency({ fileContent: tf1, upgrade }); expect(res).toEqual(tf1); }); it('returns null if wrong line', () => { @@ -36,7 +36,7 @@ describe('manager/terraform/update', () => { depNameShort: 'hashicorp/example', newValue: 'v1.0.0', }; - const res = updateDependency(tf1, upgrade); + const res = updateDependency({ fileContent: tf1, upgrade }); expect(res).toBeNull(); }); it('updates github versions', () => { @@ -51,7 +51,7 @@ describe('manager/terraform/update', () => { source: 'github.com/tieto-cem/terraform-aws-ecs-task-definition//modules/container-definition?ref=v0.1.0', }; - const res = updateDependency(tf1, upgrade); + const res = updateDependency({ fileContent: tf1, upgrade }); expect(res).not.toEqual(tf1); expect(res.includes(upgrade.newValue)).toBe(true); }); @@ -66,7 +66,7 @@ describe('manager/terraform/update', () => { source: 'hashicorp/consul/aws', newValue: '0.4.0', }; - const res = updateDependency(tf1, upgrade); + const res = updateDependency({ fileContent: tf1, upgrade }); expect(res).toBeNull(); }); it('updates terraform versions', () => { @@ -80,7 +80,7 @@ describe('manager/terraform/update', () => { source: 'hashicorp/consul/aws', newValue: '0.4.0', }; - const res = updateDependency(tf1, upgrade); + const res = updateDependency({ fileContent: tf1, upgrade }); expect(res).not.toEqual(tf1); expect(res.includes(upgrade.newValue)).toBe(true); }); @@ -98,7 +98,7 @@ describe('manager/terraform/update', () => { source: 'hashicorp/consul/aws', newValue: '0.4.0', }; - const res = updateDependency(tf1, upgrade); + const res = updateDependency({ fileContent: tf1, upgrade }); expect(res).not.toEqual(tf1); expect(res.includes(upgrade.newValue)).toBe(true); }); @@ -117,7 +117,7 @@ describe('manager/terraform/update', () => { 'https://github.com/terraform-providers/terraform-provider-azurerm', newValue: '1.38.0', }; - const res = updateDependency(tf1, upgrade); + const res = updateDependency({ fileContent: tf1, upgrade }); expect(res).not.toEqual(tf1); expect(res.includes(upgrade.newValue)).toBe(true); }); diff --git a/lib/manager/terraform/update.ts b/lib/manager/terraform/update.ts index eae2b8a0db26c6953f58324969a4723ed8b65520..83ddd487c1c8cab5465ad30e5d7a0100fe2391b1 100644 --- a/lib/manager/terraform/update.ts +++ b/lib/manager/terraform/update.ts @@ -1,13 +1,13 @@ import { logger } from '../../logger'; -import { Upgrade } from '../common'; +import { UpdateDependencyConfig } from '../common'; -export function updateDependency( - currentFileContent: string, - upgrade: Upgrade -): string | null { +export function updateDependency({ + fileContent, + upgrade, +}: UpdateDependencyConfig): string | null { try { logger.debug(`terraform.updateDependency: ${upgrade.newValue}`); - const lines = currentFileContent.split('\n'); + const lines = fileContent.split('\n'); const lineToChange = lines[upgrade.managerData.lineNumber]; let newLine = lineToChange; if (upgrade.depType === 'github') { @@ -26,7 +26,7 @@ export function updateDependency( } if (newLine === lineToChange) { logger.debug('No changes necessary'); - return currentFileContent; + return fileContent; } lines[upgrade.managerData.lineNumber] = newLine; return lines.join('\n'); diff --git a/lib/manager/travis/update.spec.ts b/lib/manager/travis/update.spec.ts index 03023376d42c76d3598688d6a014ceaec59bfc26..fa8efab247bdcde72ca113b984e62a4a45904af2 100644 --- a/lib/manager/travis/update.spec.ts +++ b/lib/manager/travis/update.spec.ts @@ -15,7 +15,7 @@ describe('manager/travis/update', () => { currentValue: ['8', '6', '4'], newValue: [6, 8], }; - const res = updateDependency(content, upgrade); + const res = updateDependency({ fileContent: content, upgrade }); expect(res).toMatchSnapshot(); }); it('falls back to 2 spaces', () => { @@ -24,7 +24,10 @@ describe('manager/travis/update', () => { currentValue: [8, 6, 4], newValue: [6, 8], }; - const res = updateDependency('hello: world', upgrade); + const res = updateDependency({ + fileContent: 'hello: world', + upgrade, + }); expect(res).toMatchSnapshot(); }); it('it uses double quotes', () => { @@ -33,7 +36,10 @@ describe('manager/travis/update', () => { currentValue: ['6'], newValue: [6, 8], }; - const res = updateDependency('node_js:\n - "6"\n', upgrade); + const res = updateDependency({ + fileContent: 'node_js:\n - "6"\n', + upgrade, + }); expect(res).toMatchSnapshot(); }); it('returns null if error', () => { @@ -42,7 +48,7 @@ describe('manager/travis/update', () => { currentValue: [8, 6, 4], newValue: '6', }; - const res = updateDependency(content, upgrade); + const res = updateDependency({ fileContent: content, upgrade }); expect(res).toBeNull(); }); }); diff --git a/lib/manager/travis/update.ts b/lib/manager/travis/update.ts index fb09d1e54d75de512d63ac5a356326aa203612e1..192293582b615233b52752aff001460942fa1b5f 100644 --- a/lib/manager/travis/update.ts +++ b/lib/manager/travis/update.ts @@ -1,12 +1,12 @@ import is from '@sindresorhus/is'; import detectIndent from 'detect-indent'; -import { Upgrade } from '../common'; +import { UpdateDependencyConfig } from '../common'; import { logger } from '../../logger'; -export function updateDependency( - fileContent: string, - upgrade: Upgrade -): string | null { +export function updateDependency({ + fileContent, + upgrade, +}: UpdateDependencyConfig): string | null { try { logger.debug(`travis.updateDependency(): ${upgrade.newValue}`); const indent = detectIndent(fileContent).indent || ' '; diff --git a/lib/workers/branch/get-updated.ts b/lib/workers/branch/get-updated.ts index 3ef7ee2b9f5823a55b1b396f8ea168f945df951d..7111ceb7afff037b816216a1e926a0ef50651d39 100644 --- a/lib/workers/branch/get-updated.ts +++ b/lib/workers/branch/get-updated.ts @@ -45,7 +45,10 @@ export async function getUpdatedPackageFiles( } let newContent = existingContent; const updateDependency = get(manager, 'updateDependency'); - newContent = await updateDependency(existingContent, upgrade); + newContent = await updateDependency({ + fileContent: existingContent, + upgrade, + }); if (!newContent) { if (config.parentBranch) { logger.info('Rebasing branch after error updating content');