From 808d5095fa423d4812b296622abdd3e41b478d83 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Tue, 7 Apr 2020 23:36:37 +0200
Subject: [PATCH] refactor(cdnurl): use autoReplace (#5909)

---
 .../cdnurl/__snapshots__/extract.spec.ts.snap | 30 -----------
 lib/manager/cdnurl/extract.ts                 |  7 ---
 lib/manager/cdnurl/index.ts                   |  5 +-
 lib/manager/cdnurl/update.spec.ts             | 53 -------------------
 lib/manager/cdnurl/update.ts                  | 28 ----------
 5 files changed, 3 insertions(+), 120 deletions(-)
 delete mode 100644 lib/manager/cdnurl/update.spec.ts
 delete mode 100644 lib/manager/cdnurl/update.ts

diff --git a/lib/manager/cdnurl/__snapshots__/extract.spec.ts.snap b/lib/manager/cdnurl/__snapshots__/extract.spec.ts.snap
index e2a4e18e20..a392f80bc5 100644
--- a/lib/manager/cdnurl/__snapshots__/extract.spec.ts.snap
+++ b/lib/manager/cdnurl/__snapshots__/extract.spec.ts.snap
@@ -8,90 +8,60 @@ Object {
       "datasource": "cdnjs",
       "depName": "prop-types",
       "lookupName": "prop-types/prop-types.min.js",
-      "managerData": Object {
-        "fileReplacePosition": 51,
-      },
     },
     Object {
       "currentValue": "16.3.2",
       "datasource": "cdnjs",
       "depName": "react",
       "lookupName": "react/umd/react.production.min.js",
-      "managerData": Object {
-        "fileReplacePosition": 115,
-      },
     },
     Object {
       "currentValue": "16.3.2",
       "datasource": "cdnjs",
       "depName": "react-dom",
       "lookupName": "react-dom/umd/react-dom.production.min.js",
-      "managerData": Object {
-        "fileReplacePosition": 199,
-      },
     },
     Object {
       "currentValue": "2.2.1",
       "datasource": "cdnjs",
       "depName": "react-transition-group",
       "lookupName": "react-transition-group/react-transition-group.min.js",
-      "managerData": Object {
-        "fileReplacePosition": 351,
-      },
     },
     Object {
       "currentValue": "1.14.3",
       "datasource": "cdnjs",
       "depName": "popper.js",
       "lookupName": "popper.js/umd/popper.min.js",
-      "managerData": Object {
-        "fileReplacePosition": 436,
-      },
     },
     Object {
       "currentValue": "0.10.4",
       "datasource": "cdnjs",
       "depName": "react-popper",
       "lookupName": "react-popper/umd/react-popper.min.js",
-      "managerData": Object {
-        "fileReplacePosition": 513,
-      },
     },
     Object {
       "currentValue": "7.1.0",
       "datasource": "cdnjs",
       "depName": "reactstrap",
       "lookupName": "reactstrap/reactstrap.min.js",
-      "managerData": Object {
-        "fileReplacePosition": 594,
-      },
     },
     Object {
       "currentValue": "4.3.1",
       "datasource": "cdnjs",
       "depName": "react-router",
       "lookupName": "react-router/react-router.min.js",
-      "managerData": Object {
-        "fileReplacePosition": 670,
-      },
     },
     Object {
       "currentValue": "4.0.6",
       "datasource": "cdnjs",
       "depName": "react-markdown",
       "lookupName": "react-markdown/react-markdown.js",
-      "managerData": Object {
-        "fileReplacePosition": 750,
-      },
     },
     Object {
       "currentValue": "0.18.0",
       "datasource": "cdnjs",
       "depName": "axios",
       "lookupName": "axios/axios.min.js",
-      "managerData": Object {
-        "fileReplacePosition": 888,
-      },
     },
   ],
 }
diff --git a/lib/manager/cdnurl/extract.ts b/lib/manager/cdnurl/extract.ts
index e4658a3bbb..eeb45569ba 100644
--- a/lib/manager/cdnurl/extract.ts
+++ b/lib/manager/cdnurl/extract.ts
@@ -12,10 +12,6 @@ export function extractPackageFile(content: string): PackageFile {
   while (match) {
     const [wholeSubstr] = match;
     const { depName, currentValue, asset } = match.groups;
-
-    const fileReplacePosition =
-      offset + match.index + wholeSubstr.indexOf(currentValue);
-
     offset += match.index + wholeSubstr.length;
     rest = content.slice(offset);
     match = cloudflareUrlRegex.exec(rest);
@@ -25,9 +21,6 @@ export function extractPackageFile(content: string): PackageFile {
       depName,
       lookupName: `${depName}/${asset}`,
       currentValue,
-      managerData: {
-        fileReplacePosition,
-      },
     });
   }
 
diff --git a/lib/manager/cdnurl/index.ts b/lib/manager/cdnurl/index.ts
index 96ebfa3c27..db62cd6974 100644
--- a/lib/manager/cdnurl/index.ts
+++ b/lib/manager/cdnurl/index.ts
@@ -1,8 +1,9 @@
 import * as semverVersioning from '../../versioning/semver';
 import { extractPackageFile } from './extract';
-import { updateDependency } from './update';
 
-export { extractPackageFile, updateDependency };
+export { extractPackageFile };
+
+export const autoReplace = true;
 
 export const defaultConfig = {
   fileMatch: [],
diff --git a/lib/manager/cdnurl/update.spec.ts b/lib/manager/cdnurl/update.spec.ts
deleted file mode 100644
index 5253603a94..0000000000
--- a/lib/manager/cdnurl/update.spec.ts
+++ /dev/null
@@ -1,53 +0,0 @@
-import { readFileSync } from 'fs';
-import { resolve } from 'path';
-import { extractPackageFile, updateDependency } from '.';
-
-const content = readFileSync(
-  resolve(__dirname, `./__fixtures__/sample.txt`),
-  'utf8'
-);
-
-describe('manager/cdnurl/update', () => {
-  it('updates dependency', () => {
-    const { deps } = extractPackageFile(content);
-    const dep = deps.pop();
-    const upgrade = {
-      ...dep,
-      newValue: '9.9.999',
-    };
-    const { currentValue, newValue } = upgrade;
-    const newFileContent = updateDependency({ fileContent: content, upgrade });
-    const cmpContent = content.replace(currentValue, newValue);
-    expect(newFileContent).toEqual(cmpContent);
-  });
-  it('returns same string for already updated dependency', () => {
-    const { deps } = extractPackageFile(content);
-    const dep = deps.pop();
-    const upgrade = {
-      ...dep,
-      newValue: '9.9.999',
-    };
-    const { currentValue } = upgrade;
-    const alreadyUpdated = content.replace(currentValue, '9.9.999');
-    const newFileContent = updateDependency({
-      fileContent: alreadyUpdated,
-      upgrade,
-    });
-    expect(newFileContent).toBe(alreadyUpdated);
-  });
-  it('returns null if content has changed', () => {
-    const { deps } = extractPackageFile(content);
-    const dep = deps.pop();
-    const upgrade = {
-      ...dep,
-      newValue: '9.9.999',
-    };
-    const { currentValue } = upgrade;
-    const alreadyUpdated = content.replace(currentValue, '2020.1');
-    const newFileContent = updateDependency({
-      fileContent: alreadyUpdated,
-      upgrade,
-    });
-    expect(newFileContent).toBeNull();
-  });
-});
diff --git a/lib/manager/cdnurl/update.ts b/lib/manager/cdnurl/update.ts
deleted file mode 100644
index f3fd77d648..0000000000
--- a/lib/manager/cdnurl/update.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import { logger } from '../../logger';
-import { UpdateDependencyConfig } from '../common';
-
-export function updateDependency({
-  fileContent,
-  upgrade,
-}: UpdateDependencyConfig): string {
-  const { depName, currentValue, newValue, managerData } = upgrade;
-  const { fileReplacePosition } = managerData;
-  const leftPart = fileContent.slice(0, fileReplacePosition);
-  const rightPart = fileContent.slice(fileReplacePosition);
-  const versionClosePosition = rightPart.indexOf('/');
-  const restPart = rightPart.slice(versionClosePosition);
-  const versionPart = rightPart.slice(0, versionClosePosition);
-  const version = versionPart.trim();
-  if (version === newValue) {
-    return fileContent;
-  }
-  if (version === currentValue) {
-    const replacedPart = versionPart.replace(version, newValue);
-    return leftPart + replacedPart + restPart;
-  }
-  logger.debug(
-    { depName, version, currentValue, newValue },
-    'File content was changed in unexpected way'
-  );
-  return null;
-}
-- 
GitLab