From 7b240690766ffde3466f6ab86bc682792fb0cede Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Sun, 19 Apr 2020 06:45:34 +0200 Subject: [PATCH] refactor(helm-requirements): use autoReplace --- .../__snapshots__/update.spec.ts.snap | 37 ------ lib/manager/helm-requirements/index.ts | 1 - lib/manager/helm-requirements/update.spec.ts | 110 ------------------ lib/manager/helm-requirements/update.ts | 65 ----------- 4 files changed, 213 deletions(-) delete mode 100644 lib/manager/helm-requirements/__snapshots__/update.spec.ts.snap delete mode 100644 lib/manager/helm-requirements/update.spec.ts delete mode 100644 lib/manager/helm-requirements/update.ts diff --git a/lib/manager/helm-requirements/__snapshots__/update.spec.ts.snap b/lib/manager/helm-requirements/__snapshots__/update.spec.ts.snap deleted file mode 100644 index 77cbbdef6e..0000000000 --- a/lib/manager/helm-requirements/__snapshots__/update.spec.ts.snap +++ /dev/null @@ -1,37 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`lib/manager/helm-requirements/update updateDependency() upgrades dependency if newValue version value is repeated 1`] = ` -" - dependencies: - - version: 0.9.0 - name: redis - repository: https://kubernetes-charts.storage.googleapis.com/ - - name: postgresql - version: 0.11.0 - repository: https://kubernetes-charts.storage.googleapis.com/ - " -`; - -exports[`lib/manager/helm-requirements/update updateDependency() upgrades dependency if valid upgrade 1`] = ` -" - dependencies: - - name: redis - version: 0.11.0 - repository: https://kubernetes-charts.storage.googleapis.com/ - - name: postgresql - version: 0.8.1 - repository: https://kubernetes-charts.storage.googleapis.com/ - " -`; - -exports[`lib/manager/helm-requirements/update updateDependency() upgrades dependency if version field comes before name field 1`] = ` -" - dependencies: - - version: 0.11.0 - name: redis - repository: https://kubernetes-charts.storage.googleapis.com/ - - name: postgresql - version: 0.8.1 - repository: https://kubernetes-charts.storage.googleapis.com/ - " -`; diff --git a/lib/manager/helm-requirements/index.ts b/lib/manager/helm-requirements/index.ts index 85fd5b7692..5595a86c74 100644 --- a/lib/manager/helm-requirements/index.ts +++ b/lib/manager/helm-requirements/index.ts @@ -1,5 +1,4 @@ export { extractPackageFile } from './extract'; -export { updateDependency } from './update'; export const defaultConfig = { aliases: { diff --git a/lib/manager/helm-requirements/update.spec.ts b/lib/manager/helm-requirements/update.spec.ts deleted file mode 100644 index 31a705706c..0000000000 --- a/lib/manager/helm-requirements/update.spec.ts +++ /dev/null @@ -1,110 +0,0 @@ -import { updateDependency } from './update'; - -describe('lib/manager/helm-requirements/update', () => { - describe('updateDependency()', () => { - it('returns the same fileContent for undefined upgrade', () => { - const content = ` - dependencies: - - name: redis - version: 0.9.0 - repository: https://kubernetes-charts.storage.googleapis.com/ - - name: postgresql - version: 0.8.1 - repository: https://kubernetes-charts.storage.googleapis.com/ - `; - const upgrade = undefined; - - expect(updateDependency({ fileContent: content, upgrade })).toBe(content); - }); - it('returns the same fileContent for invalid requirements.yaml file', () => { - const content = ` - Invalid requirements.yaml content. - `; - const upgrade = { - depName: 'redis', - newValue: '0.11.0', - repository: 'https://kubernetes-charts.storage.googleapis.com/', - }; - expect(updateDependency({ fileContent: content, upgrade })).toBe(content); - }); - it('returns the same fileContent for empty upgrade', () => { - const content = ` - dependencies: - - name: redis - version: 0.9.0 - repository: https://kubernetes-charts.storage.googleapis.com/ - - name: postgresql - version: 0.8.1 - repository: https://kubernetes-charts.storage.googleapis.com/ - `; - const upgrade = {}; - expect(updateDependency({ fileContent: content, upgrade })).toBe(content); - }); - it('upgrades dependency if valid upgrade', () => { - const content = ` - dependencies: - - name: redis - version: 0.9.0 - repository: https://kubernetes-charts.storage.googleapis.com/ - - name: postgresql - version: 0.8.1 - repository: https://kubernetes-charts.storage.googleapis.com/ - `; - const upgrade = { - depName: 'redis', - newValue: '0.11.0', - repository: 'https://kubernetes-charts.storage.googleapis.com/', - }; - 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 = ` - dependencies: - - version: 0.9.0 - name: redis - repository: https://kubernetes-charts.storage.googleapis.com/ - - name: postgresql - version: 0.8.1 - repository: https://kubernetes-charts.storage.googleapis.com/ - `; - const upgrade = { - depName: 'redis', - newValue: '0.11.0', - repository: 'https://kubernetes-charts.storage.googleapis.com/', - }; - 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 = ` - dependencies: - - version: 0.9.0 - name: redis - repository: https://kubernetes-charts.storage.googleapis.com/ - - name: postgresql - version: 0.9.0 - repository: https://kubernetes-charts.storage.googleapis.com/ - `; - const upgrade = { - depName: 'postgresql', - newValue: '0.11.0', - repository: 'https://kubernetes-charts.storage.googleapis.com/', - }; - 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 deleted file mode 100644 index 8b6bee08c8..0000000000 --- a/lib/manager/helm-requirements/update.ts +++ /dev/null @@ -1,65 +0,0 @@ -import _ from 'lodash'; -import yaml from 'js-yaml'; -import is from '@sindresorhus/is'; - -import { logger } from '../../logger'; -import { UpdateDependencyConfig } from '../common'; -import { matchAt, replaceAt } from '../../util/string'; - -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'); - return fileContent; - } - const doc = yaml.safeLoad(fileContent, { json: true }); - if (!doc || !is.array(doc.dependencies)) { - logger.debug('Failed to update dependency, invalid requirements.yaml file'); - return fileContent; - } - const { depName, newValue } = upgrade; - const oldVersion = doc.dependencies.filter((dep) => dep.name === depName)[0] - .version; - doc.dependencies = doc.dependencies.map((dep) => - dep.name === depName ? { ...dep, version: newValue } : dep - ); - const searchString = `${oldVersion}`; - const newString = `${newValue}`; - let newFileContent = fileContent; - // Search starts at 'dependencies' instead of `${depName}` because fields in a YAML record - // can be in arbitrary order for example like this: - /* - dependencies: - - version: 0.11.0 - name: redis - repository: https://kubernetes-charts.storage.googleapis.com/ - - version: 0.8.1 - name: postgresql - repository: https://kubernetes-charts.storage.googleapis.com/ - */ - let searchIndex = fileContent.indexOf('dependencies') + 'dependencies'.length; - for (; searchIndex < fileContent.length; searchIndex += 1) { - // First check if we have a hit for the old version - if (matchAt(fileContent, searchIndex, searchString)) { - logger.trace(`Found match at index ${searchIndex}`); - // Now test if the result matches - const testContent = replaceAt( - fileContent, - searchIndex, - searchString, - newString - ); - // Compare the parsed yaml structure of old and new - if (_.isEqual(doc, yaml.safeLoad(testContent, { json: true }))) { - newFileContent = testContent; - break; - } else { - logger.debug('Mismatched replace at searchIndex ' + searchIndex); - } - } - } - return newFileContent; -} -- GitLab