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