From 00bf898cd77612340655c9729ea66bb1da964012 Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Tue, 14 Apr 2020 22:31:35 +0200 Subject: [PATCH] refactor: simplify autoreplace data (#5965) --- lib/manager/ansible-galaxy/index.ts | 2 - lib/manager/buildkite/index.ts | 2 - lib/manager/cdnurl/index.ts | 2 - lib/manager/common.ts | 10 +--- lib/manager/composer/index.ts | 1 - lib/manager/deps-edn/index.ts | 2 - lib/manager/gitlabci-include/index.ts | 2 - .../html/__snapshots__/extract.spec.ts.snap | 54 ++++++------------ lib/manager/html/extract.ts | 8 +-- lib/manager/html/index.ts | 2 - lib/manager/index.spec.ts | 3 - lib/manager/kustomize/index.ts | 2 - lib/manager/leiningen/index.ts | 2 - lib/manager/nodenv/index.ts | 2 - lib/manager/nuget/index.ts | 2 - lib/manager/nvm/index.ts | 2 - lib/manager/pip_requirements/index.ts | 2 - lib/manager/pip_setup/index.ts | 2 - lib/manager/pub/index.ts | 2 - .../regex/__snapshots__/index.spec.ts.snap | 56 ++++++------------- lib/manager/regex/index.ts | 9 +-- lib/manager/ruby-version/index.ts | 1 - lib/manager/sbt/index.ts | 2 - lib/manager/swift/index.ts | 2 - lib/manager/terraform/index.ts | 2 - lib/workers/branch/auto-replace.spec.ts | 22 +++----- lib/workers/branch/auto-replace.ts | 21 ++----- lib/workers/branch/get-updated.spec.ts | 14 ++--- lib/workers/branch/get-updated.ts | 7 +-- .../__snapshots__/manager-files.spec.ts.snap | 11 +--- .../repository/extract/manager-files.spec.ts | 2 +- .../repository/extract/manager-files.ts | 11 +--- 32 files changed, 62 insertions(+), 202 deletions(-) diff --git a/lib/manager/ansible-galaxy/index.ts b/lib/manager/ansible-galaxy/index.ts index 912d1c9518..844df06481 100644 --- a/lib/manager/ansible-galaxy/index.ts +++ b/lib/manager/ansible-galaxy/index.ts @@ -2,8 +2,6 @@ import extractPackageFile from './extract'; export { extractPackageFile }; -export const autoReplace = true; - export const defaultConfig = { fileMatch: ['(^|/)requirements\\.ya?ml$'], }; diff --git a/lib/manager/buildkite/index.ts b/lib/manager/buildkite/index.ts index f5e32ab955..b11a9d6f82 100644 --- a/lib/manager/buildkite/index.ts +++ b/lib/manager/buildkite/index.ts @@ -2,8 +2,6 @@ import { extractPackageFile } from './extract'; export { extractPackageFile }; -export const autoReplace = true; - export const defaultConfig = { fileMatch: ['buildkite\\.ya?ml', '\\.buildkite/.+\\.ya?ml$'], commitMessageTopic: 'buildkite plugin {{depName}}', diff --git a/lib/manager/cdnurl/index.ts b/lib/manager/cdnurl/index.ts index db62cd6974..edf2106e65 100644 --- a/lib/manager/cdnurl/index.ts +++ b/lib/manager/cdnurl/index.ts @@ -3,8 +3,6 @@ import { extractPackageFile } from './extract'; export { extractPackageFile }; -export const autoReplace = true; - export const defaultConfig = { fileMatch: [], versioning: semverVersioning.id, diff --git a/lib/manager/common.ts b/lib/manager/common.ts index 9ef2e8e488..88aa5d8415 100644 --- a/lib/manager/common.ts +++ b/lib/manager/common.ts @@ -75,7 +75,6 @@ export interface NpmLockFiles { export interface PackageFile<T = Record<string, any>> extends NpmLockFiles, ManagerData<T> { - autoReplace?: boolean; hasYarnWorkspaces?: boolean; internalPackages?: string[]; compatibility?: Record<string, string>; @@ -126,11 +125,6 @@ export interface Package<T> extends ManagerData<T> { prettyDepType?: any; } -export interface AutoReplaceData { - replaceString: string; - depIndex?: number; -} - export interface LookupUpdate { blockedByPin?: boolean; branchName?: string; @@ -174,7 +168,8 @@ export interface PackageDependency<T = Record<string, any>> extends Package<T> { toVersion?: string; updates?: LookupUpdate[]; versionLine?: number; - autoReplaceData?: AutoReplaceData; + replaceString?: string; + depIndex?: number; } export interface Upgrade<T = Record<string, any>> @@ -225,7 +220,6 @@ export interface UpdateDependencyConfig { export interface ManagerApi { defaultConfig: object; - autoReplace?: boolean; language?: string; supportsLockFileMaintenance?: boolean; diff --git a/lib/manager/composer/index.ts b/lib/manager/composer/index.ts index 5ef43c3178..68451b7c53 100644 --- a/lib/manager/composer/index.ts +++ b/lib/manager/composer/index.ts @@ -6,7 +6,6 @@ import * as composerVersioning from '../../versioning/composer'; const language = LANGUAGE_PHP; export const supportsLockFileMaintenance = true; -export const autoReplace = true; export { extractPackageFile, updateArtifacts, language, getRangeStrategy }; diff --git a/lib/manager/deps-edn/index.ts b/lib/manager/deps-edn/index.ts index 5f9ee54da3..25df409449 100644 --- a/lib/manager/deps-edn/index.ts +++ b/lib/manager/deps-edn/index.ts @@ -3,8 +3,6 @@ import { extractPackageFile } from './extract'; export { extractPackageFile }; -export const autoReplace = true; - export const defaultConfig = { fileMatch: ['(^|/)deps\\.edn$'], versioning: mavenVersioning.id, diff --git a/lib/manager/gitlabci-include/index.ts b/lib/manager/gitlabci-include/index.ts index fd9741711b..5b104316c6 100644 --- a/lib/manager/gitlabci-include/index.ts +++ b/lib/manager/gitlabci-include/index.ts @@ -2,8 +2,6 @@ import { extractPackageFile } from './extract'; export { extractPackageFile }; -export const autoReplace = true; - export const defaultConfig = { fileMatch: ['^\\.gitlab-ci\\.yml$'], }; diff --git a/lib/manager/html/__snapshots__/extract.spec.ts.snap b/lib/manager/html/__snapshots__/extract.spec.ts.snap index 019f09b047..5554308518 100644 --- a/lib/manager/html/__snapshots__/extract.spec.ts.snap +++ b/lib/manager/html/__snapshots__/extract.spec.ts.snap @@ -4,102 +4,82 @@ exports[`manager/html/extract extractPackageFile 1`] = ` Object { "deps": Array [ Object { - "autoReplaceData": Object { - "replaceString": "<script type=\\"text/javascript\\" - src=\\"https://cdnjs.cloudflare.com/ajax/libs/prop-types/15.6.1/prop-types.min.js\\">", - }, "currentValue": "15.6.1", "datasource": "cdnjs", "depName": "prop-types", "lookupName": "prop-types/prop-types.min.js", + "replaceString": "<script type=\\"text/javascript\\" + src=\\"https://cdnjs.cloudflare.com/ajax/libs/prop-types/15.6.1/prop-types.min.js\\">", }, Object { - "autoReplaceData": Object { - "replaceString": "<script type=\\"text/javascript\\" - src=\\"https://cdnjs.cloudflare.com/ajax/libs/react/16.3.2/umd/react.production.min.js\\">", - }, "currentValue": "16.3.2", "datasource": "cdnjs", "depName": "react", "lookupName": "react/umd/react.production.min.js", + "replaceString": "<script type=\\"text/javascript\\" + src=\\"https://cdnjs.cloudflare.com/ajax/libs/react/16.3.2/umd/react.production.min.js\\">", }, Object { - "autoReplaceData": Object { - "replaceString": "<script type=\\"text/javascript\\" - src=\\"https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.3.2/umd/react-dom.production.min.js\\">", - }, "currentValue": "16.3.2", "datasource": "cdnjs", "depName": "react-dom", "lookupName": "react-dom/umd/react-dom.production.min.js", + "replaceString": "<script type=\\"text/javascript\\" + src=\\"https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.3.2/umd/react-dom.production.min.js\\">", }, Object { - "autoReplaceData": Object { - "replaceString": "<script type=\\"text/javascript\\" - src=\\"https://cdnjs.cloudflare.com/ajax/libs/react-transition-group/2.2.1/react-transition-group.min.js\\">", - }, "currentValue": "2.2.1", "datasource": "cdnjs", "depName": "react-transition-group", "lookupName": "react-transition-group/react-transition-group.min.js", + "replaceString": "<script type=\\"text/javascript\\" + src=\\"https://cdnjs.cloudflare.com/ajax/libs/react-transition-group/2.2.1/react-transition-group.min.js\\">", }, Object { - "autoReplaceData": Object { - "replaceString": "<script type=\\"text/javascript\\" - src=\\"https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js\\">", - }, "currentValue": "1.14.3", "datasource": "cdnjs", "depName": "popper.js", "lookupName": "popper.js/umd/popper.min.js", + "replaceString": "<script type=\\"text/javascript\\" + src=\\"https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js\\">", }, Object { - "autoReplaceData": Object { - "replaceString": "<script type=\\"text/javascript\\" - src=\\"https://cdnjs.cloudflare.com/ajax/libs/react-popper/0.10.4/umd/react-popper.min.js\\">", - }, "currentValue": "0.10.4", "datasource": "cdnjs", "depName": "react-popper", "lookupName": "react-popper/umd/react-popper.min.js", + "replaceString": "<script type=\\"text/javascript\\" + src=\\"https://cdnjs.cloudflare.com/ajax/libs/react-popper/0.10.4/umd/react-popper.min.js\\">", }, Object { - "autoReplaceData": Object { - "replaceString": "<script src=\\"https://cdnjs.cloudflare.com/ajax/libs/reactstrap/7.1.0/reactstrap.min.js\\">", - }, "currentValue": "7.1.0", "datasource": "cdnjs", "depName": "reactstrap", "lookupName": "reactstrap/reactstrap.min.js", + "replaceString": "<script src=\\"https://cdnjs.cloudflare.com/ajax/libs/reactstrap/7.1.0/reactstrap.min.js\\">", }, Object { - "autoReplaceData": Object { - "replaceString": "<script src=\\" https://cdnjs.cloudflare.com/ajax/libs/react-router/4.3.1/react-router.min.js\\">", - }, "currentValue": "4.3.1", "datasource": "cdnjs", "depName": "react-router", "lookupName": "react-router/react-router.min.js", + "replaceString": "<script src=\\" https://cdnjs.cloudflare.com/ajax/libs/react-router/4.3.1/react-router.min.js\\">", }, Object { - "autoReplaceData": Object { - "replaceString": "<script src=\\"https://cdnjs.cloudflare.com/ajax/libs/react-markdown/4.0.6/react-markdown.js\\">", - }, "currentValue": "4.0.6", "datasource": "cdnjs", "depName": "react-markdown", "lookupName": "react-markdown/react-markdown.js", + "replaceString": "<script src=\\"https://cdnjs.cloudflare.com/ajax/libs/react-markdown/4.0.6/react-markdown.js\\">", }, Object { - "autoReplaceData": Object { - "replaceString": "<script src=\\"https://cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js\\" - integrity=\\"sha256-mpnrJ5DpEZZkwkE1ZgkEQQJW/46CSEh/STrZKOB/qoM=\\" crossorigin=\\"anonymous\\">", - }, "currentDigest": "sha256-mpnrJ5DpEZZkwkE1ZgkEQQJW/46CSEh/STrZKOB/qoM=", "currentValue": "0.18.0", "datasource": "cdnjs", "depName": "axios", "lookupName": "axios/axios.min.js", + "replaceString": "<script src=\\"https://cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js\\" + integrity=\\"sha256-mpnrJ5DpEZZkwkE1ZgkEQQJW/46CSEh/STrZKOB/qoM=\\" crossorigin=\\"anonymous\\">", }, ], } diff --git a/lib/manager/html/extract.ts b/lib/manager/html/extract.ts index d9ec262dd2..6a5c891898 100644 --- a/lib/manager/html/extract.ts +++ b/lib/manager/html/extract.ts @@ -17,6 +17,7 @@ export function extractDep(tag: string): PackageDependency | null { depName, lookupName: `${depName}/${asset}`, currentValue, + replaceString: tag, }; const integrityMatch = integrityRegex.exec(tag); if (integrityMatch) { @@ -37,12 +38,7 @@ export function extractPackageFile(content: string): PackageFile { match = regex.exec(rest); const dep = extractDep(replaceString); if (dep) { - deps.push({ - ...dep, - autoReplaceData: { - replaceString, - }, - }); + deps.push(dep); } } if (!deps.length) { diff --git a/lib/manager/html/index.ts b/lib/manager/html/index.ts index 058367de68..5b05144ecd 100644 --- a/lib/manager/html/index.ts +++ b/lib/manager/html/index.ts @@ -3,8 +3,6 @@ import * as semverVersioning from '../../versioning/semver'; export { extractPackageFile }; -export const autoReplace = true; - export const defaultConfig = { fileMatch: ['\\.html?$'], versioning: semverVersioning.id, diff --git a/lib/manager/index.spec.ts b/lib/manager/index.spec.ts index 06fb46d227..f8cbb1229d 100644 --- a/lib/manager/index.spec.ts +++ b/lib/manager/index.spec.ts @@ -24,9 +24,6 @@ describe('manager', () => { if (!module.defaultConfig) { return false; } - if (!module.updateDependency && !module.autoReplace) { - return false; - } if (!module.extractPackageFile && !module.extractAllPackageFiles) { return false; } diff --git a/lib/manager/kustomize/index.ts b/lib/manager/kustomize/index.ts index ce5bdde2f0..c76d0f9977 100644 --- a/lib/manager/kustomize/index.ts +++ b/lib/manager/kustomize/index.ts @@ -1,7 +1,5 @@ export { extractPackageFile } from './extract'; -export const autoReplace = true; - export const defaultConfig = { fileMatch: ['(^|/)kustomization\\.yaml'], }; diff --git a/lib/manager/leiningen/index.ts b/lib/manager/leiningen/index.ts index b5e2f90033..f501592d2c 100644 --- a/lib/manager/leiningen/index.ts +++ b/lib/manager/leiningen/index.ts @@ -2,8 +2,6 @@ import * as mavenVersioning from '../../versioning/maven'; export { extractPackageFile } from './extract'; -export const autoReplace = true; - export const defaultConfig = { fileMatch: ['(^|/)project\\.clj$'], versioning: mavenVersioning.id, diff --git a/lib/manager/nodenv/index.ts b/lib/manager/nodenv/index.ts index 80a723945f..f1298b8370 100644 --- a/lib/manager/nodenv/index.ts +++ b/lib/manager/nodenv/index.ts @@ -3,8 +3,6 @@ import * as nodeVersioning from '../../versioning/node'; export { extractPackageFile } from './extract'; -export const autoReplace = true; - export const language = LANGUAGE_NODE; export const defaultConfig = { diff --git a/lib/manager/nuget/index.ts b/lib/manager/nuget/index.ts index 7dc18d87a8..f42cb60352 100644 --- a/lib/manager/nuget/index.ts +++ b/lib/manager/nuget/index.ts @@ -2,8 +2,6 @@ import { LANGUAGE_DOT_NET } from '../../constants/languages'; export { extractPackageFile } from './extract'; -export const autoReplace = true; - export const language = LANGUAGE_DOT_NET; export const defaultConfig = { diff --git a/lib/manager/nvm/index.ts b/lib/manager/nvm/index.ts index 39baa77b42..5780252f18 100644 --- a/lib/manager/nvm/index.ts +++ b/lib/manager/nvm/index.ts @@ -3,8 +3,6 @@ import * as nodeVersioning from '../../versioning/node'; export { extractPackageFile } from './extract'; -export const autoReplace = true; - export const language = LANGUAGE_NODE; export const defaultConfig = { diff --git a/lib/manager/pip_requirements/index.ts b/lib/manager/pip_requirements/index.ts index 5c9b729050..3b321a2fc9 100644 --- a/lib/manager/pip_requirements/index.ts +++ b/lib/manager/pip_requirements/index.ts @@ -5,8 +5,6 @@ export { getRangeStrategy } from './range'; export const language = LANGUAGE_PYTHON; -export const autoReplace = true; - export const defaultConfig = { fileMatch: ['(^|/)([\\w-]*)requirements.(txt|pip)$'], }; diff --git a/lib/manager/pip_setup/index.ts b/lib/manager/pip_setup/index.ts index 854761c722..30d0b4489f 100644 --- a/lib/manager/pip_setup/index.ts +++ b/lib/manager/pip_setup/index.ts @@ -4,8 +4,6 @@ export { extractPackageFile } from './extract'; export const language = LANGUAGE_PYTHON; -export const autoReplace = true; - export const defaultConfig = { fileMatch: ['(^|/)setup.py$'], }; diff --git a/lib/manager/pub/index.ts b/lib/manager/pub/index.ts index 245129a5d6..dcdceecd7f 100644 --- a/lib/manager/pub/index.ts +++ b/lib/manager/pub/index.ts @@ -2,8 +2,6 @@ import * as npmVersioning from '../../versioning/npm'; export { extractPackageFile } from './extract'; -export const autoReplace = true; - export const defaultConfig = { fileMatch: ['(^|/)pubspec\\.ya?ml$'], versioning: npmVersioning.id, diff --git a/lib/manager/regex/__snapshots__/index.spec.ts.snap b/lib/manager/regex/__snapshots__/index.spec.ts.snap index 5aa0872b4c..90ed65cf6c 100644 --- a/lib/manager/regex/__snapshots__/index.spec.ts.snap +++ b/lib/manager/regex/__snapshots__/index.spec.ts.snap @@ -4,91 +4,67 @@ exports[`manager/regex/index extracts multiple dependencies 1`] = ` Object { "deps": Array [ Object { - "autoReplaceData": Object { - "depIndex": 0, - "replaceString": "ENV GRADLE_VERSION=6.2 # gradle-version/gradle&versioning=maven -", - }, "currentValue": "6.2", "datasource": "gradle-version", "depName": "gradle", + "replaceString": "ENV GRADLE_VERSION=6.2 # gradle-version/gradle&versioning=maven +", "versioning": "maven", }, Object { - "autoReplaceData": Object { - "depIndex": 1, - "replaceString": "ENV NODE_VERSION=10.19.0 # github-tags/nodejs/node&versioning=node -", - }, "currentValue": "10.19.0", "datasource": "github-tags", "depName": "nodejs/node", + "replaceString": "ENV NODE_VERSION=10.19.0 # github-tags/nodejs/node&versioning=node +", "versioning": "node", }, Object { - "autoReplaceData": Object { - "depIndex": 2, - "replaceString": "ENV COMPOSER_VERSION=1.9.3 # github-releases/composer/composer -", - }, "currentValue": "1.9.3", "datasource": "github-releases", "depName": "composer/composer", + "replaceString": "ENV COMPOSER_VERSION=1.9.3 # github-releases/composer/composer +", "versioning": "semver", }, Object { - "autoReplaceData": Object { - "depIndex": 3, - "replaceString": "ENV COCOAPODS_VERSION=1.9.0 # rubygems/cocoapods&versioning=ruby -", - }, "currentValue": "1.9.0", "datasource": "rubygems", "depName": "cocoapods", + "replaceString": "ENV COCOAPODS_VERSION=1.9.0 # rubygems/cocoapods&versioning=ruby +", "versioning": "ruby", }, Object { - "autoReplaceData": Object { - "depIndex": 4, - "replaceString": "ENV DOCKER_VERSION=19.03.1 # github-releases/docker/docker-ce&versioning=docker -", - }, "currentValue": "19.03.1", "datasource": "github-releases", "depName": "docker/docker-ce", + "replaceString": "ENV DOCKER_VERSION=19.03.1 # github-releases/docker/docker-ce&versioning=docker +", "versioning": "docker", }, Object { - "autoReplaceData": Object { - "depIndex": 5, - "replaceString": "ENV POETRY_VERSION=1.0.0 # github-releases/python-poetry/poetry -", - }, "currentValue": "1.0.0", "datasource": "github-releases", "depName": "python-poetry/poetry", + "replaceString": "ENV POETRY_VERSION=1.0.0 # github-releases/python-poetry/poetry +", "versioning": "semver", }, Object { - "autoReplaceData": Object { - "depIndex": 6, - "replaceString": "ENV NPM_VERSION=6.10.2 # npm/npm -", - }, "currentValue": "6.10.2", "datasource": "npm", "depName": "npm", + "replaceString": "ENV NPM_VERSION=6.10.2 # npm/npm +", "versioning": "semver", }, Object { - "autoReplaceData": Object { - "depIndex": 7, - "replaceString": "ENV YARN_VERSION=1.19.1 # npm/yarn -", - }, "currentValue": "1.19.1", "datasource": "npm", "depName": "yarn", + "replaceString": "ENV YARN_VERSION=1.19.1 # npm/yarn +", "versioning": "semver", }, ], diff --git a/lib/manager/regex/index.ts b/lib/manager/regex/index.ts index 93dfd2265a..3c0cff43bc 100644 --- a/lib/manager/regex/index.ts +++ b/lib/manager/regex/index.ts @@ -3,8 +3,6 @@ import { CustomExtractConfig, PackageFile, Result } from '../common'; import { regEx } from '../../util/regex'; import { logger } from '../../logger'; -export const autoReplace = true; - export const defaultConfig = { pinDigests: false, }; @@ -17,7 +15,6 @@ export function extractPackageFile( const regexMatch = regEx(config.matchStrings[0], 'g'); const deps = []; let matchResult; - let depIndex = 0; do { matchResult = regexMatch.exec(content); if (matchResult) { @@ -47,13 +44,9 @@ export function extractPackageFile( dep[field] = groups[field]; } } - dep.autoReplaceData = { - depIndex, - replaceString: `${matchResult[0]}`, - }; + dep.replaceString = `${matchResult[0]}`; deps.push(dep); } - depIndex += 1; } while (matchResult); if (deps.length) { return { deps, matchStrings: config.matchStrings }; diff --git a/lib/manager/ruby-version/index.ts b/lib/manager/ruby-version/index.ts index 17619c7d64..8f9b439c4d 100644 --- a/lib/manager/ruby-version/index.ts +++ b/lib/manager/ruby-version/index.ts @@ -3,7 +3,6 @@ import * as rubyVersioning from '../../versioning/ruby'; export { extractPackageFile } from './extract'; -export const autoReplace = true; export const language = LANGUAGE_RUBY; export const defaultConfig = { diff --git a/lib/manager/sbt/index.ts b/lib/manager/sbt/index.ts index 424d3cecf4..e587990399 100644 --- a/lib/manager/sbt/index.ts +++ b/lib/manager/sbt/index.ts @@ -2,8 +2,6 @@ import * as ivyVersioning from '../../versioning/ivy'; export { extractPackageFile } from './extract'; -export const autoReplace = true; - export const defaultConfig = { fileMatch: ['\\.sbt$', 'project/[^/]*.scala$'], versioning: ivyVersioning.id, diff --git a/lib/manager/swift/index.ts b/lib/manager/swift/index.ts index b94f2f434b..e9102b4cf2 100644 --- a/lib/manager/swift/index.ts +++ b/lib/manager/swift/index.ts @@ -2,8 +2,6 @@ import * as swiftVersioning from '../../versioning/swift'; export { extractPackageFile } from './extract'; -export const autoReplace = true; - export const defaultConfig = { fileMatch: ['(^|/)Package\\.swift'], versioning: swiftVersioning.id, diff --git a/lib/manager/terraform/index.ts b/lib/manager/terraform/index.ts index 1fc4cbb4a2..7e21d3abf6 100644 --- a/lib/manager/terraform/index.ts +++ b/lib/manager/terraform/index.ts @@ -2,8 +2,6 @@ import * as hashicorpVersioning from '../../versioning/hashicorp'; export { extractPackageFile } from './extract'; -export const autoReplace = true; - export const defaultConfig = { commitMessageTopic: 'Terraform {{managerData.terraformDependencyType}} {{depNameShort}}', diff --git a/lib/workers/branch/auto-replace.spec.ts b/lib/workers/branch/auto-replace.spec.ts index c0c5941adf..ba7b8ffcbd 100644 --- a/lib/workers/branch/auto-replace.spec.ts +++ b/lib/workers/branch/auto-replace.spec.ts @@ -47,9 +47,7 @@ describe('workers/branch/auto-replace', () => { upgrade.lookupName = 'reactstrap/7.1.0/reactstrap.min.js'; upgrade.currentValue = '7.1.0'; upgrade.newValue = '7.1.1'; - upgrade.autoReplaceData = { - depIndex: 0, - }; + upgrade.depIndex = 0; const res = await doAutoReplace(upgrade, src, parentBranch); expect(res).toMatchSnapshot(); }); @@ -62,10 +60,8 @@ describe('workers/branch/auto-replace', () => { upgrade.lookupName = 'reactstrap/7.1.0/reactstrap.min.js'; upgrade.currentValue = '7.1.0'; upgrade.newValue = '7.1.1'; - upgrade.autoReplaceData = { - depIndex: 0, - replaceString: script, - }; + upgrade.depIndex = 0; + upgrade.replaceString = script; parentBranch = 'something'; const srcAlreadyUpdated = src.replace('7.1.0', '7.1.1'); const res = await doAutoReplace(upgrade, srcAlreadyUpdated, parentBranch); @@ -80,10 +76,8 @@ describe('workers/branch/auto-replace', () => { upgrade.lookupName = 'reactstrap/7.1.0/reactstrap.min.js'; upgrade.currentValue = '7.1.0'; upgrade.newValue = '7.1.1'; - upgrade.autoReplaceData = { - depIndex: 0, - replaceString: script, - }; + upgrade.depIndex = 0; + upgrade.replaceString = script; const res = await doAutoReplace(upgrade, 'wrong source', parentBranch); expect(res).toEqual('wrong source'); }); @@ -99,10 +93,8 @@ describe('workers/branch/auto-replace', () => { 'sha384-K3vbOmF2BtaVai+Qk37uypf7VrgBubhQreNQe9aGsz9lB63dIFiQVlJbr92dw2Lx'; upgrade.newValue = '0.11.1'; upgrade.newDigest = 'sha256-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'; - upgrade.autoReplaceData = { - depIndex: 0, - replaceString: script, - }; + upgrade.depIndex = 0; + upgrade.replaceString = script; const res = await doAutoReplace(upgrade, src, parentBranch); expect(res).toMatchSnapshot(); }); diff --git a/lib/workers/branch/auto-replace.ts b/lib/workers/branch/auto-replace.ts index a0f4b18d34..3db55742f6 100644 --- a/lib/workers/branch/auto-replace.ts +++ b/lib/workers/branch/auto-replace.ts @@ -8,13 +8,7 @@ export async function confirmIfDepUpdated( upgrade, newContent: string ): Promise<boolean> { - const { - manager, - packageFile, - newValue, - newDigest, - autoReplaceData, - } = upgrade; + const { manager, packageFile, newValue, newDigest, depIndex } = upgrade; const extractPackageFile = get(manager, 'extractPackageFile'); let newUpgrade; try { @@ -23,7 +17,7 @@ export async function confirmIfDepUpdated( packageFile, upgrade ); - newUpgrade = newExtract.deps[autoReplaceData.depIndex]; + newUpgrade = newExtract.deps[depIndex]; } catch (err) /* istanbul ignore next */ { logger.debug('Failed to parse newContent'); } @@ -77,15 +71,8 @@ export async function doAutoReplace( logger.debug('Branch dep is already updated'); return existingContent; } - const { - depName, - currentValue, - newValue, - currentDigest, - newDigest, - autoReplaceData, - } = upgrade; - const replaceString = autoReplaceData?.replaceString || currentValue; + const { depName, currentValue, newValue, currentDigest, newDigest } = upgrade; + const replaceString = upgrade.replaceString || currentValue; logger.trace({ depName, replaceString }, 'autoReplace replaceString'); let searchIndex = existingContent.indexOf(replaceString); if (searchIndex === -1) { diff --git a/lib/workers/branch/get-updated.spec.ts b/lib/workers/branch/get-updated.spec.ts index b7b958a410..a1cc12e821 100644 --- a/lib/workers/branch/get-updated.spec.ts +++ b/lib/workers/branch/get-updated.spec.ts @@ -28,25 +28,25 @@ describe('workers/branch/get-updated', () => { platform.getFile.mockResolvedValueOnce('existing content'); }); it('handles autoreplace base updated', async () => { - config.upgrades.push({ manager: 'html', autoReplace: true }); + config.upgrades.push({ manager: 'html' }); autoReplace.doAutoReplace.mockResolvedValueOnce('updated-file'); const res = await getUpdatedPackageFiles(config); expect(res).toMatchSnapshot(); }); it('handles autoreplace branch no update', async () => { - config.upgrades.push({ manager: 'html', autoReplace: true }); + config.upgrades.push({ manager: 'html' }); autoReplace.doAutoReplace.mockResolvedValueOnce('existing content'); const res = await getUpdatedPackageFiles(config); expect(res).toMatchSnapshot(); }); it('handles autoreplace failure', async () => { - config.upgrades.push({ manager: 'html', autoReplace: true }); + config.upgrades.push({ manager: 'html' }); autoReplace.doAutoReplace.mockResolvedValueOnce(null); await expect(getUpdatedPackageFiles(config)).rejects.toThrow(); }); it('handles autoreplace branch needs update', async () => { config.parentBranch = 'some branch'; - config.upgrades.push({ manager: 'html', autoReplace: true }); + config.upgrades.push({ manager: 'html' }); autoReplace.doAutoReplace.mockResolvedValueOnce(null); autoReplace.doAutoReplace.mockResolvedValueOnce('updated-file'); const res = await getUpdatedPackageFiles(config); @@ -86,9 +86,6 @@ describe('workers/branch/get-updated', () => { }, }, ]); - config.upgrades.forEach((upgrade) => { - upgrade.autoReplace = true; // eslint-disable-line no-param-reassign - }); const res = await getUpdatedPackageFiles(config); expect(res).toMatchSnapshot(); }); @@ -140,9 +137,6 @@ describe('workers/branch/get-updated', () => { }, }, ]); - config.upgrades.forEach((upgrade) => { - upgrade.autoReplace = true; // eslint-disable-line no-param-reassign - }); const res = await getUpdatedPackageFiles(config); expect(res).toMatchSnapshot(); }); diff --git a/lib/workers/branch/get-updated.ts b/lib/workers/branch/get-updated.ts index dcd65dcc78..51390eba93 100644 --- a/lib/workers/branch/get-updated.ts +++ b/lib/workers/branch/get-updated.ts @@ -26,7 +26,7 @@ export async function getUpdatedPackageFiles( const packageFileUpdatedDeps: Record<string, string[]> = {}; const lockFileMaintenanceFiles = []; for (const upgrade of config.upgrades) { - const { autoReplace, manager, packageFile, depName } = upgrade; + const { manager, packageFile, depName } = upgrade; packageFileManagers[packageFile] = manager; packageFileUpdatedDeps[packageFile] = packageFileUpdatedDeps[packageFile] || []; @@ -45,8 +45,8 @@ export async function getUpdatedPackageFiles( parentBranch: undefined, }); } - if (autoReplace) { - logger.debug('autoReplace'); + const updateDependency = get(manager, 'updateDependency'); + if (!updateDependency) { const res = await doAutoReplace(upgrade, existingContent, parentBranch); if (res) { if (res === existingContent) { @@ -65,7 +65,6 @@ export async function getUpdatedPackageFiles( logger.error('Could not autoReplace'); throw new Error(WORKER_FILE_UPDATE_FAILED); } - const updateDependency = get(manager, 'updateDependency'); const newContent = await updateDependency({ fileContent: existingContent, upgrade, diff --git a/lib/workers/repository/extract/__snapshots__/manager-files.spec.ts.snap b/lib/workers/repository/extract/__snapshots__/manager-files.spec.ts.snap index a22dac8a35..50b14424a3 100644 --- a/lib/workers/repository/extract/__snapshots__/manager-files.spec.ts.snap +++ b/lib/workers/repository/extract/__snapshots__/manager-files.spec.ts.snap @@ -26,18 +26,13 @@ Array [ exports[`workers/repository/extract/manager-files getManagerPackageFiles() returns files with extractPackageFile 1`] = ` Array [ Object { - "autoReplace": true, "deps": Array [ Object { - "autoReplaceData": Object { - "depIndex": 0, - }, + "depIndex": 0, }, Object { - "autoReplaceData": Object { - "depIndex": 1, - "replaceString": "abc", - }, + "depIndex": 1, + "replaceString": "abc", }, ], "manager": "html", diff --git a/lib/workers/repository/extract/manager-files.spec.ts b/lib/workers/repository/extract/manager-files.spec.ts index b6bca450b2..ee3420fe2d 100644 --- a/lib/workers/repository/extract/manager-files.spec.ts +++ b/lib/workers/repository/extract/manager-files.spec.ts @@ -39,7 +39,7 @@ describe('workers/repository/extract/manager-files', () => { fileMatch.getMatchingFiles.mockReturnValue(['Dockerfile']); platform.getFile.mockResolvedValue('some content'); html.extractPackageFile = jest.fn(() => ({ - deps: [{}, { autoReplaceData: { replaceString: 'abc' } }], + deps: [{}, { replaceString: 'abc' }], })) as never; const res = await getManagerPackageFiles(managerConfig); expect(res).toMatchSnapshot(); diff --git a/lib/workers/repository/extract/manager-files.ts b/lib/workers/repository/extract/manager-files.ts index be7910c5c9..c9544472f3 100644 --- a/lib/workers/repository/extract/manager-files.ts +++ b/lib/workers/repository/extract/manager-files.ts @@ -49,15 +49,8 @@ export async function getManagerPackageFiles(config): Promise<PackageFile[]> { config ); if (res) { - if (get(manager, 'autoReplace')) { - res.autoReplace = true; - for (let index = 0; index < res.deps.length; index += 1) { - // auto-populate the depIndex value - res.deps[index].autoReplaceData = { - ...res.deps[index].autoReplaceData, - depIndex: index, - }; - } + for (let index = 0; index < res.deps.length; index += 1) { + res.deps[index].depIndex = index; } packageFiles.push({ packageFile, -- GitLab