diff --git a/docs/development/adding-a-package-manager.md b/docs/development/adding-a-package-manager.md index 6094a9ddc00c1217aea1954926b274002a4f16b0..49d1abfbede3c76148c1d44f24c42070edf6faf5 100644 --- a/docs/development/adding-a-package-manager.md +++ b/docs/development/adding-a-package-manager.md @@ -35,7 +35,7 @@ This function is mandatory unless you use `extractAllPackageFiles` instead. It t - dependency name - dependency type (e.g. dependencies, devDependencies, etc) - currentValue -- version scheme used (e.g. semver, pep440) +- versioning used (e.g. semver, pep440) The fields returned here can be customised to suit the package manager, e.g. Dockerfile uses `lineNumber`. Custom fields should be added within a `managerData` object. diff --git a/docs/usage/configuration-options.md b/docs/usage/configuration-options.md index bec28a07a261bf2e90a1ec1d905a64dd298d15ef..db869706d569af9f6cc339e8e36bf9e05177149e 100644 --- a/docs/usage/configuration-options.md +++ b/docs/usage/configuration-options.md @@ -1571,11 +1571,11 @@ When schedules are in use, it generally means "no updates". However there are ca This defaults to `true`, meaning that Renovate will perform certain "desirable" updates to _existing_ PRs even when outside of schedule. If you wish to disable all updates outside of scheduled hours then configure this field to `false`. -## versionScheme +## versioning -Usually, each language or package manager has a specific type of "version scheme". e.g. JavaScript uses npm's semver implementation, Python uses pep440, etc. At Renovate we have also implemented some of our own, such as `"docker"` to address the most common way people tag versions using Docker, and `"loose"` as a fallback that tries semver first but otherwise just does its best to sort and compare. +Usually, each language or package manager has a specific type of "versioning". e.g. JavaScript uses npm's semver implementation, Python uses pep440, etc. At Renovate we have also implemented some of our own, such as `"docker"` to address the most common way people tag versions using Docker, and `"loose"` as a fallback that tries semver first but otherwise just does its best to sort and compare. -By exposing `versionScheme` to config, it allows you to override the default version scheme for a package manager if you really need. In most cases it would not be recommended, but there are some cases such as Docker or Gradle where versioning is not strictly defined and you may need to specify the versioning type per-package. +By exposing `versioning` to config, it allows you to override the default versioning for a package manager if you really need. In most cases it would not be recommended, but there are some cases such as Docker or Gradle where versioning is not strictly defined and you may need to specify the versioning type per-package. ## vulnerabilityAlerts diff --git a/docs/usage/docker.md b/docs/usage/docker.md index a3e14ea3705387b961d107ab4da439ef910c0d59..09501b11af02fc5de7239fb3a50bec633cc2b188 100644 --- a/docs/usage/docker.md +++ b/docs/usage/docker.md @@ -27,7 +27,7 @@ Renovate by default will preserve the precision of Docker images. For example if Although suffixes in semver indicate pre-releases (e.g. `v1.2.0-alpha.2`), in Docker they typically indicate compatibility, e.g. `12.2.0-alpine`. Renovate defaults to assuming suffixes indicate compatibility so will never _change_ it. e.g. `12.1.0-alpine` might get updated to `12.1.1-alpine` but never `12.1.1` or `12.1.1-stretch`. -If this behaviour does not suit a particular package you have, Renovate allows you to customize the `versionScheme` in use. For example, if you have a Docker image `foo/bar` that sticks to semver versioning and you need Renovate to understand that suffixes indicate pre-releases versions and not compatibility, then you could configure this package rule: +If this behaviour does not suit a particular package you have, Renovate allows you to customize the `versioning` in use. For example, if you have a Docker image `foo/bar` that sticks to semver versioning and you need Renovate to understand that suffixes indicate pre-releases versions and not compatibility, then you could configure this package rule: ```json { @@ -35,7 +35,7 @@ If this behaviour does not suit a particular package you have, Renovate allows y { "datasources": ["docker"], "packageNames": ["foo/bar"], - "versionScheme": "semver" + "versioning": "semver" } ] } @@ -49,15 +49,15 @@ Another example is the official `python` image, which follows `pep440` versionin { "datasources": ["docker"], "packageNames": ["python"], - "versionScheme": "pep440" + "versioning": "pep440" } ] } ``` -If traditional versioning doesn't work, consider using Renovate's built-in `loose` `versionScheme`. It essentially just does a best effort sort of versions, regardless of whether they contain letters or digits. +If traditional versioning doesn't work, consider using Renovate's built-in `loose` `versioning`. It essentially just does a best effort sort of versions, regardless of whether they contain letters or digits. -Finally, if you use a Docker image that follows a versioning approach not captured by one of our existing version schemes, and which `loose` sorts incorrectly, you could see if the `regex` `versionScheme` can work. It uses regex capture group syntax to let you specify which part of the version string is major, minor, patch, pre-release, or compatibility. See the docs for `versionScheme` for documentation/examples of `regex` versioning in action. +Finally, if you use a Docker image that follows a versioning approach not captured by one of our existing versionings, and which `loose` sorts incorrectly, you could see if the `regex` `versioning` can work. It uses regex capture group syntax to let you specify which part of the version string is major, minor, patch, pre-release, or compatibility. See the docs for `versioning` for documentation/examples of `regex` versioning in action. ## Digest Pinning diff --git a/lib/config/definitions.ts b/lib/config/definitions.ts index 1fd1401c97710dbdea07ec74b1ce719357c2047d..ff4dd29577adafa71048afaf4fa2e9aeb2f619af 100644 --- a/lib/config/definitions.ts +++ b/lib/config/definitions.ts @@ -1,10 +1,8 @@ import { RenovateConfigStage } from './common'; -import { - VERSION_SCHEME_DOCKER, - VERSION_SCHEME_PEP440, - VERSION_SCHEME_SEMVER, -} from '../constants/version-schemes'; -import { getVersionSchemeList } from '../versioning'; +import * as dockerVersioning from '../versioning/docker'; +import * as pep440Versioning from '../versioning/pep440'; +import * as semverVersioning from '../versioning/semver'; +import { getVersioningList } from '../versioning'; import { PLATFORM_TYPE_GITHUB } from '../constants/platforms'; import { platformList } from '../platform'; @@ -633,11 +631,11 @@ const options: RenovateOptions[] = [ env: false, }, { - name: 'versionScheme', - description: 'Version scheme to use for filtering and comparisons', + name: 'versioning', + description: 'versioning to use for filtering and comparisons', type: 'string', - allowedValues: getVersionSchemeList(), - default: VERSION_SCHEME_SEMVER, + allowedValues: getVersioningList(), + default: semverVersioning.id, cli: false, env: false, }, @@ -1462,7 +1460,7 @@ const options: RenovateOptions[] = [ stage: 'package', type: 'object', default: { - versionScheme: VERSION_SCHEME_DOCKER, + versioning: dockerVersioning.id, managerBranchPrefix: 'docker-', commitMessageTopic: '{{{depName}}} Docker tag', major: { enabled: false }, @@ -1508,7 +1506,7 @@ const options: RenovateOptions[] = [ stage: 'package', type: 'object', default: { - versionScheme: VERSION_SCHEME_PEP440, + versioning: pep440Versioning.id, }, mergeable: true, cli: false, diff --git a/lib/config/migration.ts b/lib/config/migration.ts index 9f79785b445c8cd0c78b1dff6de28d5ce77d3ed1..da3affa5e4d01ab40b9a4efee960a80799d446f4 100644 --- a/lib/config/migration.ts +++ b/lib/config/migration.ts @@ -173,6 +173,10 @@ export function migrateConfig( migratedConfig.extends[i] = 'config:js-lib'; } } + } else if (key === 'versionScheme') { + isMigrated = true; + migratedConfig.versioning = val; + delete migratedConfig.versionScheme; } else if ( key === 'automergeType' && is.string(val) && diff --git a/lib/constants/version-schemes.ts b/lib/constants/version-schemes.ts deleted file mode 100644 index 94f18183d7f988e09fd48c65e02f6ac22c14a447..0000000000000000000000000000000000000000 --- a/lib/constants/version-schemes.ts +++ /dev/null @@ -1,18 +0,0 @@ -export const VERSION_SCHEME_SEMVER = 'semver'; -export const VERSION_SCHEME_NPM = 'npm'; -export const VERSION_SCHEME_NODE = 'node'; -export const VERSION_SCHEME_HASHICORP = 'hashicorp'; -export const VERSION_SCHEME_COMPOSER = 'composer'; -export const VERSION_SCHEME_GIT = 'git'; -export const VERSION_SCHEME_POETRY = 'poetry'; -export const VERSION_SCHEME_MAVEN = 'maven'; -export const VERSION_SCHEME_SWIFT = 'swift'; -export const VERSION_SCHEME_RUBY = 'ruby'; -export const VERSION_SCHEME_HEX = 'hex'; -export const VERSION_SCHEME_CARGO = 'cargo'; -export const VERSION_SCHEME_DOCKER = 'docker'; -export const VERSION_SCHEME_PEP440 = 'pep440'; -export const VERSION_SCHEME_IVY = 'ivy'; -export const VERSION_SCHEME_LOOSE = 'loose'; -export const VERSION_SCHEME_NUGET = 'nuget'; -export const VERSION_SCHEME_REGEX = 'regex'; diff --git a/lib/datasource/common.ts b/lib/datasource/common.ts index b5710d79a672d01abb393cb0770f30a2d890e510..e97b71b71e02660f6e57d1875b2b72f0210dac2b 100644 --- a/lib/datasource/common.ts +++ b/lib/datasource/common.ts @@ -11,7 +11,7 @@ export interface PkgReleaseConfig extends Config { depType?: string; lookupType?: string; npmrc?: string; - versionScheme?: string; + versioning?: string; } export type DigestConfig = Config; diff --git a/lib/datasource/github/index.ts b/lib/datasource/github/index.ts index f653f7a52e3277c8dda4cdbfc2bbafc83ba2ca47..5ed65e172314f6ff1afcb7853181ba44c2564432 100644 --- a/lib/datasource/github/index.ts +++ b/lib/datasource/github/index.ts @@ -162,7 +162,7 @@ export async function getDigest( /** * github.getPkgReleases * - * This function can be used to fetch releases with a customisable version scheme (e.g. semver) and with either tags or releases. + * This function can be used to fetch releases with a customisable versioning (e.g. semver) and with either tags or releases. * * This function will: * - Fetch all tags or releases (depending on configuration) diff --git a/lib/datasource/index.ts b/lib/datasource/index.ts index a8773e176ad7b688a06ab79e846e33c7e7f4cef8..20d5aad7b5122546454aed0efc6bd075e14a0150 100644 --- a/lib/datasource/index.ts +++ b/lib/datasource/index.ts @@ -1,6 +1,6 @@ import { logger } from '../logger'; import { addMetaData } from './metadata'; -import * as versioning from '../versioning'; +import * as allVersioning from '../versioning'; import { Datasource, @@ -10,7 +10,7 @@ import { ReleaseResult, DigestConfig, } from './common'; -import { VERSION_SCHEME_SEMVER } from '../constants/version-schemes'; +import * as semverVersioning from '../versioning/semver'; import { loadModules } from '../util/modules'; export * from './common'; @@ -73,12 +73,10 @@ export async function getPkgReleases( if (!res) { return res; } - const versionScheme = - config && config.versionScheme - ? config.versionScheme - : VERSION_SCHEME_SEMVER; - // Filter by version scheme - const version = versioning.get(versionScheme); + const versioning = + config && config.versioning ? config.versioning : semverVersioning.id; + // Filter by versioning + const version = allVersioning.get(versioning); // Return a sorted list of valid Versions function sortReleases(release1: Release, release2: Release): number { return version.sortVersions(release1.version, release2.version); diff --git a/lib/datasource/maven/index.spec.ts b/lib/datasource/maven/index.spec.ts index 05a0658cea7e82a285b57918269a90e70f9ba366..3b348fd6594f06582805a672872ecd51792e8653 100644 --- a/lib/datasource/maven/index.spec.ts +++ b/lib/datasource/maven/index.spec.ts @@ -3,7 +3,7 @@ import fs from 'fs'; import { resolve } from 'path'; import * as datasource from '..'; import { DATASOURCE_FAILURE } from '../../constants/error-messages'; -import { VERSION_SCHEME_LOOSE } from '../../constants/version-schemes'; +import * as looseVersioning from '../../versioning/loose'; import { DATASOURCE_MAVEN } from '../../constants/data-binary-source'; import * as hostRules from '../../util/host-rules'; @@ -34,7 +34,7 @@ const MYSQL_MAVEN_MYSQL_POM = fs.readFileSync( ); const config = { - versionScheme: VERSION_SCHEME_LOOSE, + versioning: looseVersioning.id, datasource: DATASOURCE_MAVEN, }; diff --git a/lib/datasource/packagist/index.spec.ts b/lib/datasource/packagist/index.spec.ts index 23fa3177bfb95887e42243762d7095b13b6795d7..6fe97f860cc871f468301a566b3bc7c7d23cf4aa 100644 --- a/lib/datasource/packagist/index.spec.ts +++ b/lib/datasource/packagist/index.spec.ts @@ -2,7 +2,7 @@ import fs from 'fs'; import _got from '../../util/got'; import * as datasource from '..'; import * as _hostRules from '../../util/host-rules'; -import { VERSION_SCHEME_COMPOSER } from '../../constants/version-schemes'; +import * as composerVersioning from '../../versioning/composer'; import { DATASOURCE_PACKAGIST } from '../../constants/data-binary-source'; jest.mock('../../util/got'); @@ -30,7 +30,7 @@ describe('datasource/packagist', () => { hostRules.hosts = jest.fn(() => []); global.repoCache = {}; config = { - versionScheme: VERSION_SCHEME_COMPOSER, + versioning: composerVersioning.id, datasource: DATASOURCE_PACKAGIST, registryUrls: [ 'https://composer.renovatebot.com', diff --git a/lib/datasource/sbt/index.spec.ts b/lib/datasource/sbt/index.spec.ts index 2908ba9c82d4af09e97b0e3ad78959b376d38ed3..56846cc4bf67b25fb446cedc3520d33575ddda71 100644 --- a/lib/datasource/sbt/index.spec.ts +++ b/lib/datasource/sbt/index.spec.ts @@ -4,7 +4,7 @@ import nock from 'nock'; import { getPkgReleases } from '.'; import { DEFAULT_MAVEN_REPO } from '../../manager/maven/extract'; import { parseIndexDir, SBT_PLUGINS_REPO } from './util'; -import { VERSION_SCHEME_IVY } from '../../constants/version-schemes'; +import * as ivyVersioning from '../../versioning/ivy'; import { DATASOURCE_SBT } from '../../constants/data-binary-source'; const mavenIndexHtml = fs.readFileSync( @@ -101,7 +101,7 @@ describe('datasource/sbt', () => { it('returns null in case of errors', async () => { expect( await getPkgReleases({ - versionScheme: VERSION_SCHEME_IVY, + versioning: ivyVersioning.id, datasource: DATASOURCE_SBT, lookupName: 'org.scalatest:scalatest', registryUrls: ['https://failed_repo/maven'], @@ -109,7 +109,7 @@ describe('datasource/sbt', () => { ).toEqual(null); expect( await getPkgReleases({ - versionScheme: VERSION_SCHEME_IVY, + versioning: ivyVersioning.id, datasource: DATASOURCE_SBT, lookupName: 'org.scalatest:scalaz', depType: 'plugin', @@ -120,7 +120,7 @@ describe('datasource/sbt', () => { it('fetches releases from Maven', async () => { expect( await getPkgReleases({ - versionScheme: VERSION_SCHEME_IVY, + versioning: ivyVersioning.id, datasource: DATASOURCE_SBT, lookupName: 'org.scalatest:scalatest', registryUrls: [ @@ -138,7 +138,7 @@ describe('datasource/sbt', () => { }); expect( await getPkgReleases({ - versionScheme: VERSION_SCHEME_IVY, + versioning: ivyVersioning.id, datasource: DATASOURCE_SBT, lookupName: 'org.scalatest:scalatest_2.12', registryUrls: [DEFAULT_MAVEN_REPO, SBT_PLUGINS_REPO], @@ -154,7 +154,7 @@ describe('datasource/sbt', () => { it('fetches sbt plugins', async () => { expect( await getPkgReleases({ - versionScheme: VERSION_SCHEME_IVY, + versioning: ivyVersioning.id, datasource: DATASOURCE_SBT, lookupName: 'org.foundweekends:sbt-bintray', depType: 'plugin', @@ -170,7 +170,7 @@ describe('datasource/sbt', () => { }); expect( await getPkgReleases({ - versionScheme: VERSION_SCHEME_IVY, + versioning: ivyVersioning.id, datasource: DATASOURCE_SBT, lookupName: 'org.foundweekends:sbt-bintray_2.12', depType: 'plugin', diff --git a/lib/manager/ansible/__snapshots__/extract.spec.ts.snap b/lib/manager/ansible/__snapshots__/extract.spec.ts.snap index e4abe9090ddc55954a3aab031e5d2d6e1e0db3a7..debebba8a84c5b1f380f42228b7dec5c3980c827 100644 --- a/lib/manager/ansible/__snapshots__/extract.spec.ts.snap +++ b/lib/manager/ansible/__snapshots__/extract.spec.ts.snap @@ -10,7 +10,7 @@ Array [ "managerData": Object { "lineNumber": 4, }, - "versionScheme": "docker", + "versioning": "docker", }, Object { "currentDigest": undefined, @@ -20,7 +20,7 @@ Array [ "managerData": Object { "lineNumber": 11, }, - "versionScheme": "docker", + "versioning": "docker", }, Object { "currentDigest": undefined, @@ -30,7 +30,7 @@ Array [ "managerData": Object { "lineNumber": 23, }, - "versionScheme": "docker", + "versioning": "docker", }, Object { "currentDigest": undefined, @@ -40,7 +40,7 @@ Array [ "managerData": Object { "lineNumber": 40, }, - "versionScheme": "docker", + "versioning": "docker", }, Object { "currentDigest": undefined, @@ -50,7 +50,7 @@ Array [ "managerData": Object { "lineNumber": 52, }, - "versionScheme": "docker", + "versioning": "docker", }, Object { "currentDigest": undefined, @@ -60,7 +60,7 @@ Array [ "managerData": Object { "lineNumber": 64, }, - "versionScheme": "docker", + "versioning": "docker", }, Object { "currentDigest": undefined, @@ -70,7 +70,7 @@ Array [ "managerData": Object { "lineNumber": 76, }, - "versionScheme": "docker", + "versioning": "docker", }, Object { "currentDigest": undefined, @@ -80,7 +80,7 @@ Array [ "managerData": Object { "lineNumber": 83, }, - "versionScheme": "docker", + "versioning": "docker", }, Object { "currentDigest": undefined, @@ -90,7 +90,7 @@ Array [ "managerData": Object { "lineNumber": 96, }, - "versionScheme": "docker", + "versioning": "docker", }, ] `; @@ -105,7 +105,7 @@ Array [ "managerData": Object { "lineNumber": 8, }, - "versionScheme": "docker", + "versioning": "docker", }, Object { "currentDigest": undefined, @@ -115,7 +115,7 @@ Array [ "managerData": Object { "lineNumber": 30, }, - "versionScheme": "docker", + "versioning": "docker", }, Object { "currentDigest": undefined, @@ -125,7 +125,7 @@ Array [ "managerData": Object { "lineNumber": 38, }, - "versionScheme": "docker", + "versioning": "docker", }, Object { "currentDigest": undefined, @@ -135,7 +135,7 @@ Array [ "managerData": Object { "lineNumber": 43, }, - "versionScheme": "docker", + "versioning": "docker", }, ] `; diff --git a/lib/manager/ansible/extract.ts b/lib/manager/ansible/extract.ts index fa71966b0e7e974cbbe39dcc3241e290c7f67e40..c871fa818ba5f2a909a6277362ba501e9cd9759c 100644 --- a/lib/manager/ansible/extract.ts +++ b/lib/manager/ansible/extract.ts @@ -1,7 +1,7 @@ import { logger } from '../../logger'; import { getDep } from '../dockerfile/extract'; import { PackageFile, PackageDependency } from '../common'; -import { VERSION_SCHEME_DOCKER } from '../../constants/version-schemes'; +import * as dockerVersioning from '../../versioning/docker'; export default function extractPackageFile( content: string @@ -24,7 +24,7 @@ export default function extractPackageFile( 'Docker image inside ansible' ); dep.managerData = { lineNumber }; - dep.versionScheme = VERSION_SCHEME_DOCKER; + dep.versioning = dockerVersioning.id; deps.push(dep); } lineNumber += 1; diff --git a/lib/manager/bazel/__snapshots__/extract.spec.ts.snap b/lib/manager/bazel/__snapshots__/extract.spec.ts.snap index aa3cb84c8a96651be4093ba96e34e6a5eb5caa15..906bc60e005ce37c3ac792f59a1b3a36c26c5a57 100644 --- a/lib/manager/bazel/__snapshots__/extract.spec.ts.snap +++ b/lib/manager/bazel/__snapshots__/extract.spec.ts.snap @@ -19,7 +19,7 @@ Array [ tag=\\"v1.0.0-alpha31.cli-migrations\\" )", }, - "versionScheme": "docker", + "versioning": "docker", }, ] `; diff --git a/lib/manager/bazel/extract.ts b/lib/manager/bazel/extract.ts index ac9182d78c68950d039f4a86edaf0528a367d72a..1dd0cfe24909c45333c05182a94affbcae34affc 100644 --- a/lib/manager/bazel/extract.ts +++ b/lib/manager/bazel/extract.ts @@ -4,7 +4,7 @@ import { parse as _parse } from 'url'; import { logger } from '../../logger'; import { PackageDependency, PackageFile } from '../common'; import { regEx } from '../../util/regex'; -import { VERSION_SCHEME_DOCKER } from '../../constants/version-schemes'; +import * as dockerVersioning from '../../versioning/docker'; import { DATASOURCE_DOCKER, DATASOURCE_GITHUB, @@ -242,7 +242,7 @@ export function extractPackageFile(content: string): PackageFile | null { dep.currentDigest = digest; dep.currentValue = currentValue; dep.depName = depName; - dep.versionScheme = VERSION_SCHEME_DOCKER; + dep.versioning = dockerVersioning.id; dep.datasource = DATASOURCE_DOCKER; dep.lookupName = repository; deps.push(dep); diff --git a/lib/manager/bundler/index.ts b/lib/manager/bundler/index.ts index 1d5ae7812db6a72af9a763b63c7bc66148a05c47..d94aecf09e6806c94b215ef2de30ac6043f43659 100644 --- a/lib/manager/bundler/index.ts +++ b/lib/manager/bundler/index.ts @@ -3,7 +3,7 @@ import { updateDependency } from './update'; import { updateArtifacts } from './artifacts'; import { getRangeStrategy } from './range'; import { LANGUAGE_RUBY } from '../../constants/languages'; -import { VERSION_SCHEME_RUBY } from '../../constants/version-schemes'; +import * as rubyVersioning from '../../versioning/ruby'; const language = LANGUAGE_RUBY; @@ -22,5 +22,5 @@ export { export const defaultConfig = { fileMatch: ['(^|/)Gemfile$'], - versionScheme: VERSION_SCHEME_RUBY, + versioning: rubyVersioning.id, }; diff --git a/lib/manager/cargo/index.ts b/lib/manager/cargo/index.ts index 52fd710fca59e35c90442ab5108980ca5afc2f74..8f67566d64368bc625b71800716539b58300b62a 100644 --- a/lib/manager/cargo/index.ts +++ b/lib/manager/cargo/index.ts @@ -2,7 +2,7 @@ import { extractPackageFile } from './extract'; import { updateDependency } from './update'; import { updateArtifacts } from './artifacts'; import { LANGUAGE_RUST } from '../../constants/languages'; -import { VERSION_SCHEME_CARGO } from '../../constants/version-schemes'; +import * as cargoVersioning from '../../versioning/cargo'; const language = LANGUAGE_RUST; // TODO: Support this @@ -14,6 +14,6 @@ export const defaultConfig = { commitMessageTopic: 'Rust crate {{depName}}', managerBranchPrefix: 'rust-', fileMatch: ['(^|/)Cargo.toml$'], - versionScheme: VERSION_SCHEME_CARGO, + versioning: cargoVersioning.id, rangeStrategy: 'bump', }; diff --git a/lib/manager/cdnurl/index.ts b/lib/manager/cdnurl/index.ts index a067cdf276cf3b07d32a91d590646bacacdd95b1..96ebfa3c27b98b1c02d9af8436f963980e38ca30 100644 --- a/lib/manager/cdnurl/index.ts +++ b/lib/manager/cdnurl/index.ts @@ -1,4 +1,4 @@ -import { VERSION_SCHEME_SEMVER } from '../../constants/version-schemes'; +import * as semverVersioning from '../../versioning/semver'; import { extractPackageFile } from './extract'; import { updateDependency } from './update'; @@ -6,5 +6,5 @@ export { extractPackageFile, updateDependency }; export const defaultConfig = { fileMatch: [], - versionScheme: VERSION_SCHEME_SEMVER, + versioning: semverVersioning.id, }; diff --git a/lib/manager/circleci/__snapshots__/extract.spec.ts.snap b/lib/manager/circleci/__snapshots__/extract.spec.ts.snap index 32a715ab19b5bd8a13d87e008f2193b5d42326dd..d9dc36298d4f5cfd33ca5d69da640d6b0cd50dfc 100644 --- a/lib/manager/circleci/__snapshots__/extract.spec.ts.snap +++ b/lib/manager/circleci/__snapshots__/extract.spec.ts.snap @@ -62,7 +62,7 @@ Array [ "lineNumber": 3, }, "rangeStrategy": "pin", - "versionScheme": "npm", + "versioning": "npm", }, Object { "commitMessageTopic": "{{{depName}}} orb", @@ -75,7 +75,7 @@ Array [ "lineNumber": 4, }, "rangeStrategy": "pin", - "versionScheme": "npm", + "versioning": "npm", }, Object { "commitMessageTopic": "{{{depName}}} orb", @@ -88,7 +88,7 @@ Array [ "lineNumber": 5, }, "rangeStrategy": "pin", - "versionScheme": "npm", + "versioning": "npm", }, Object { "currentDigest": "sha256:3870d35b962a943df72d948580fc66ceaaee1c4fbd205930f32e0f0760eb1077", diff --git a/lib/manager/circleci/extract.ts b/lib/manager/circleci/extract.ts index 474955546921e1791880af1f4d950f7bed3fbaa0..975537af2392ec7d163ae6d5952e2b22f6b9f8bb 100644 --- a/lib/manager/circleci/extract.ts +++ b/lib/manager/circleci/extract.ts @@ -1,7 +1,7 @@ import { logger } from '../../logger'; import { getDep } from '../dockerfile/extract'; import { PackageFile, PackageDependency } from '../common'; -import { VERSION_SCHEME_NPM } from '../../constants/version-schemes'; +import * as npmVersioning from '../../versioning/npm'; import { DATASOURCE_ORB } from '../../constants/data-binary-source'; export function extractPackageFile(content: string): PackageFile | null { @@ -33,7 +33,7 @@ export function extractPackageFile(content: string): PackageFile | null { datasource: DATASOURCE_ORB, lookupName: orbName, commitMessageTopic: '{{{depName}}} orb', - versionScheme: VERSION_SCHEME_NPM, + versioning: npmVersioning.id, rangeStrategy: 'pin', }; deps.push(dep); diff --git a/lib/manager/common.ts b/lib/manager/common.ts index a6b6aca79335b1aff5c155f37e91f6598ebba0e1..d77516b8b7916bb644dac26b74cf6aba352f60dd 100644 --- a/lib/manager/common.ts +++ b/lib/manager/common.ts @@ -23,7 +23,7 @@ export interface ExtractConfig extends ManagerConfig { ignoreNpmrcFile?: boolean; skipInstalls?: boolean; - versionScheme?: string; + versioning?: string; } export interface UpdateArtifactsConfig extends ManagerConfig { @@ -104,7 +104,7 @@ export interface Package<T> extends ManagerData<T> { lookupName?: string; repo?: string; target?: string; - versionScheme?: string; + versioning?: string; // npm manager bumpVersion?: ReleaseType | string; diff --git a/lib/manager/composer/index.ts b/lib/manager/composer/index.ts index 26e19fff4b92f5cfdacf3edbc001577ce824b889..99deda1f4531c6cc0aff363c96dcbcd6db957983 100644 --- a/lib/manager/composer/index.ts +++ b/lib/manager/composer/index.ts @@ -3,7 +3,7 @@ import { updateDependency } from '../npm/update'; import { updateArtifacts } from './artifacts'; import { getRangeStrategy } from './range'; import { LANGUAGE_PHP } from '../../constants/languages'; -import { VERSION_SCHEME_COMPOSER } from '../../constants/version-schemes'; +import * as composerVersioning from '../../versioning/composer'; const language = LANGUAGE_PHP; export const supportsLockFileMaintenance = true; @@ -18,5 +18,5 @@ export { export const defaultConfig = { fileMatch: ['(^|/)([\\w-]*)composer.json$'], - versionScheme: VERSION_SCHEME_COMPOSER, + versioning: composerVersioning.id, }; diff --git a/lib/manager/deps-edn/index.ts b/lib/manager/deps-edn/index.ts index 8b66511f36d9b7eab2e33c0053cd9b4e37c35a44..9f81a4dd48e53e59c2051d2d3f8c3cff790b2457 100644 --- a/lib/manager/deps-edn/index.ts +++ b/lib/manager/deps-edn/index.ts @@ -1,4 +1,4 @@ -import { VERSION_SCHEME_MAVEN } from '../../constants/version-schemes'; +import * as mavenVersioning from '../../versioning/maven'; import { extractPackageFile } from './extract'; import { updateDependency } from './update'; @@ -6,5 +6,5 @@ export { extractPackageFile, updateDependency }; export const defaultConfig = { fileMatch: ['(^|/)deps\\.edn$'], - versionScheme: VERSION_SCHEME_MAVEN, + versioning: mavenVersioning.id, }; diff --git a/lib/manager/git-submodules/index.ts b/lib/manager/git-submodules/index.ts index 3fab0be73a92dd72535a976181c27f07da434765..22dde889eec8d7d10637092e5e3ea69e9b5668d7 100644 --- a/lib/manager/git-submodules/index.ts +++ b/lib/manager/git-submodules/index.ts @@ -1,4 +1,4 @@ -import { VERSION_SCHEME_GIT } from '../../constants/version-schemes'; +import * as gitVersioning from '../../versioning/git'; export { default as extractPackageFile } from './extract'; export { default as updateDependency } from './update'; @@ -6,6 +6,6 @@ export { default as updateArtifacts } from './artifacts'; export const defaultConfig = { enabled: false, - versionScheme: VERSION_SCHEME_GIT, + versioning: gitVersioning.id, fileMatch: ['(^|/).gitmodules$'], }; diff --git a/lib/manager/github-actions/__snapshots__/extract.spec.ts.snap b/lib/manager/github-actions/__snapshots__/extract.spec.ts.snap index 11c3c4551e6fecadef00ac2ae8c8181ba6cd3873..d4638ac065c5048d34409dfe5edd59df73d6ad66 100644 --- a/lib/manager/github-actions/__snapshots__/extract.spec.ts.snap +++ b/lib/manager/github-actions/__snapshots__/extract.spec.ts.snap @@ -10,7 +10,7 @@ Array [ "managerData": Object { "lineNumber": 11, }, - "versionScheme": "docker", + "versioning": "docker", }, Object { "commitMessageTopic": "Node.js", @@ -21,7 +21,7 @@ Array [ "managerData": Object { "lineNumber": 36, }, - "versionScheme": "docker", + "versioning": "docker", }, ] `; @@ -36,7 +36,7 @@ Array [ "managerData": Object { "lineNumber": 17, }, - "versionScheme": "docker", + "versioning": "docker", }, Object { "commitMessageTopic": "Node.js", @@ -47,7 +47,7 @@ Array [ "managerData": Object { "lineNumber": 31, }, - "versionScheme": "docker", + "versioning": "docker", }, ] `; diff --git a/lib/manager/github-actions/extract.ts b/lib/manager/github-actions/extract.ts index ef78d9e803d65e63352b14cd2387daf5d1d80cfd..15fcc0290f32f447861731e1836891e09d45ee8a 100644 --- a/lib/manager/github-actions/extract.ts +++ b/lib/manager/github-actions/extract.ts @@ -1,7 +1,7 @@ import { logger } from '../../logger'; import { getDep } from '../dockerfile/extract'; import { PackageFile, PackageDependency } from '../common'; -import { VERSION_SCHEME_DOCKER } from '../../constants/version-schemes'; +import * as dockerVersioning from '../../versioning/docker'; export function extractPackageFile(content: string): PackageFile | null { logger.debug('github-actions.extractPackageFile()'); @@ -25,7 +25,7 @@ export function extractPackageFile(content: string): PackageFile | null { 'Docker image inside GitHub Actions' ); dep.managerData = { lineNumber }; - dep.versionScheme = VERSION_SCHEME_DOCKER; + dep.versioning = dockerVersioning.id; deps.push(dep); } lineNumber += 1; diff --git a/lib/manager/gradle-wrapper/__snapshots__/extract.spec.ts.snap b/lib/manager/gradle-wrapper/__snapshots__/extract.spec.ts.snap index 866baef318d315b9c6c2728faca7c3bae1c15696..d4c5b928e617cd9ab571f06d83bb820cd1e01820 100644 --- a/lib/manager/gradle-wrapper/__snapshots__/extract.spec.ts.snap +++ b/lib/manager/gradle-wrapper/__snapshots__/extract.spec.ts.snap @@ -12,7 +12,7 @@ Array [ "gradleWrapperType": "all", "lineNumber": 5, }, - "versionScheme": "semver", + "versioning": "semver", }, ] `; @@ -28,7 +28,7 @@ Array [ "gradleWrapperType": "bin", "lineNumber": 4, }, - "versionScheme": "semver", + "versioning": "semver", }, ] `; diff --git a/lib/manager/gradle-wrapper/extract.ts b/lib/manager/gradle-wrapper/extract.ts index fc8843d115d57569bc59159bdb05e7207bb26eac..e29fe1914e3899ea248ede8aabca59fcbba93ced 100644 --- a/lib/manager/gradle-wrapper/extract.ts +++ b/lib/manager/gradle-wrapper/extract.ts @@ -1,7 +1,7 @@ import { coerce } from 'semver'; import { logger } from '../../logger'; import { PackageFile, PackageDependency } from '../common'; -import { VERSION_SCHEME_SEMVER } from '../../constants/version-schemes'; +import * as semverVersioning from '../../versioning/semver'; import { DATASOURCE_GRADLE_VERSION } from '../../constants/data-binary-source'; export function extractPackageFile(fileContent: string): PackageFile | null { @@ -20,7 +20,7 @@ export function extractPackageFile(fileContent: string): PackageFile | null { depName: 'gradle', currentValue: coerce(match[1]).toString(), managerData: { lineNumber, gradleWrapperType: match[3] }, - versionScheme: VERSION_SCHEME_SEMVER, + versioning: semverVersioning.id, }; let shaLineNumber = 0; diff --git a/lib/manager/gradle/index.ts b/lib/manager/gradle/index.ts index 3969cce0731b60f24c39c55965227647db4d5c35..8696a1e316e1b62ba4e36096931bbae8e4296487 100644 --- a/lib/manager/gradle/index.ts +++ b/lib/manager/gradle/index.ts @@ -3,7 +3,7 @@ import upath from 'upath'; import { exec, ExecOptions } from '../../util/exec'; import { logger } from '../../logger'; -import { VERSION_SCHEME_MAVEN } from '../../constants/version-schemes'; +import * as mavenVersioning from '../../versioning/maven'; import { init, @@ -178,5 +178,5 @@ export const language = LANGUAGE_JAVA; export const defaultConfig = { fileMatch: ['\\.gradle(\\.kts)?$', '(^|/)gradle.properties$'], timeout: 600, - versionScheme: VERSION_SCHEME_MAVEN, + versioning: mavenVersioning.id, }; diff --git a/lib/manager/html/index.ts b/lib/manager/html/index.ts index beaa7d4bed690af46e141b1f817f7be146ee1a02..cf42ed6745194518073f85c4cbee9b18bcbe4a9b 100644 --- a/lib/manager/html/index.ts +++ b/lib/manager/html/index.ts @@ -1,10 +1,10 @@ import { extractPackageFile } from './extract'; import { updateDependency } from './update'; -import { VERSION_SCHEME_SEMVER } from '../../constants/version-schemes'; +import * as semverVersioning from '../../versioning/semver'; export { extractPackageFile, updateDependency }; export const defaultConfig = { fileMatch: ['\\.html?$'], - versionScheme: VERSION_SCHEME_SEMVER, + versioning: semverVersioning.id, }; diff --git a/lib/manager/leiningen/index.ts b/lib/manager/leiningen/index.ts index b4ad8ba27f9446f4a4fb62a1a759ae597923c958..b8814fe7d705287ae1db4f3a338210f1d7533510 100644 --- a/lib/manager/leiningen/index.ts +++ b/lib/manager/leiningen/index.ts @@ -1,9 +1,9 @@ -import { VERSION_SCHEME_MAVEN } from '../../constants/version-schemes'; +import * as mavenVersioning from '../../versioning/maven'; export { extractPackageFile } from './extract'; export { updateDependency } from './update'; export const defaultConfig = { fileMatch: ['(^|/)project\\.clj$'], - versionScheme: VERSION_SCHEME_MAVEN, + versioning: mavenVersioning.id, }; diff --git a/lib/manager/maven/index.ts b/lib/manager/maven/index.ts index 17d6cec59bdf8925824a1f3665951e46411cc69f..45f09393cc9794f516fbb04de9dc89196f26c578 100644 --- a/lib/manager/maven/index.ts +++ b/lib/manager/maven/index.ts @@ -1,5 +1,5 @@ import { LANGUAGE_JAVA } from '../../constants/languages'; -import { VERSION_SCHEME_MAVEN } from '../../constants/version-schemes'; +import * as mavenVersioning from '../../versioning/maven'; export { extractAllPackageFiles } from './extract'; export { updateDependency } from './update'; @@ -8,5 +8,5 @@ export const language = LANGUAGE_JAVA; export const defaultConfig = { fileMatch: ['\\.pom\\.xml$', '(^|/)pom\\.xml$'], - versionScheme: VERSION_SCHEME_MAVEN, + versioning: mavenVersioning.id, }; diff --git a/lib/manager/mix/index.ts b/lib/manager/mix/index.ts index 6f7ceb65cc7930cf4eca11178df2d2c9234fb29b..e47cac35e2cbea7cdf40f6164da9ceba89c31179 100644 --- a/lib/manager/mix/index.ts +++ b/lib/manager/mix/index.ts @@ -1,5 +1,5 @@ import { LANGUAGE_ELIXIR } from '../../constants/languages'; -import { VERSION_SCHEME_HEX } from '../../constants/version-schemes'; +import * as hexVersioning from '../../versioning/hex'; export { extractPackageFile } from './extract'; export { updateDependency } from './update'; @@ -9,5 +9,5 @@ export const language = LANGUAGE_ELIXIR; export const defaultConfig = { fileMatch: ['(^|/)mix\\.exs$'], - versionScheme: VERSION_SCHEME_HEX, + versioning: hexVersioning.id, }; diff --git a/lib/manager/npm/extract/__snapshots__/index.spec.ts.snap b/lib/manager/npm/extract/__snapshots__/index.spec.ts.snap index 887d0b531145f539dd623040ea72c09465df57a7..ad69beb3b925bdde2a01f54b5dd14cacaf0fb9b5 100644 --- a/lib/manager/npm/extract/__snapshots__/index.spec.ts.snap +++ b/lib/manager/npm/extract/__snapshots__/index.spec.ts.snap @@ -92,7 +92,7 @@ Object { "enabled": false, }, "prettyDepType": "engine", - "versionScheme": "node", + "versioning": "node", }, Object { "commitMessageTopic": "npm", @@ -351,7 +351,7 @@ Object { "enabled": false, }, "prettyDepType": "engine", - "versionScheme": "node", + "versioning": "node", }, Object { "commitMessageTopic": "Node.js", @@ -364,7 +364,7 @@ Object { "enabled": false, }, "prettyDepType": "volta", - "versionScheme": "node", + "versioning": "node", }, Object { "commitMessageTopic": "Yarn", @@ -413,7 +413,7 @@ Object { "enabled": false, }, "prettyDepType": "engine", - "versionScheme": "node", + "versioning": "node", }, Object { "commitMessageTopic": "Node.js", @@ -426,7 +426,7 @@ Object { "enabled": false, }, "prettyDepType": "volta", - "versionScheme": "node", + "versioning": "node", }, Object { "commitMessageTopic": "Yarn", diff --git a/lib/manager/npm/extract/index.ts b/lib/manager/npm/extract/index.ts index beaeb246a6b15d47d12a39a147092adefea32e10..a41401b0b3145643b48e43b634412c9c320ec0c8 100644 --- a/lib/manager/npm/extract/index.ts +++ b/lib/manager/npm/extract/index.ts @@ -17,7 +17,7 @@ import { import { NpmPackage } from './common'; import { platform } from '../../../platform'; import { CONFIG_VALIDATION } from '../../../constants/error-messages'; -import { VERSION_SCHEME_NODE } from '../../../constants/version-schemes'; +import * as nodeVersioning from '../../../versioning/node'; import { DATASOURCE_GITHUB, DATASOURCE_NPM, @@ -158,7 +158,7 @@ export async function extractPackageFile( if (depName === 'node') { dep.datasource = DATASOURCE_GITHUB; dep.lookupName = 'nodejs/node'; - dep.versionScheme = VERSION_SCHEME_NODE; + dep.versioning = nodeVersioning.id; } else if (depName === 'yarn') { dep.datasource = DATASOURCE_NPM; dep.commitMessageTopic = 'Yarn'; @@ -179,7 +179,7 @@ export async function extractPackageFile( if (depName === 'node') { dep.datasource = DATASOURCE_GITHUB; dep.lookupName = 'nodejs/node'; - dep.versionScheme = VERSION_SCHEME_NODE; + dep.versioning = nodeVersioning.id; } else if (depName === 'yarn') { dep.datasource = DATASOURCE_NPM; dep.commitMessageTopic = 'Yarn'; diff --git a/lib/manager/npm/index.ts b/lib/manager/npm/index.ts index d525196a5a5bead7ddb13ab523b2d18cee41dd83..9ba07182e70b96847aa2ad2900012249b8d76289 100644 --- a/lib/manager/npm/index.ts +++ b/lib/manager/npm/index.ts @@ -1,5 +1,5 @@ import { LANGUAGE_JAVASCRIPT } from '../../constants/languages'; -import { VERSION_SCHEME_NPM } from '../../constants/version-schemes'; +import * as npmVersioning from '../../versioning/npm'; export { extractAllPackageFiles } from './extract'; export { updateDependency } from './update'; @@ -11,7 +11,7 @@ export const supportsLockFileMaintenance = true; export const defaultConfig = { fileMatch: ['(^|/)package.json$'], rollbackPrs: true, - versionScheme: VERSION_SCHEME_NPM, + versioning: npmVersioning.id, prBodyDefinitions: { Change: '[{{#if displayFrom}}`{{{displayFrom}}}` -> {{else}}{{#if currentValue}}`{{{currentValue}}}` -> {{/if}}{{/if}}{{#if displayTo}}`{{{displayTo}}}`{{else}}`{{{newValue}}}`{{/if}}](https://renovatebot.com/diffs/npm/{{{depNameEscaped}}}/{{{fromVersion}}}/{{{toVersion}}})', diff --git a/lib/manager/nuget/extract.ts b/lib/manager/nuget/extract.ts index 2d3dee1841173fd7b4ce3e8a15170fc5c79fcc68..cf4bc024b9c18593d3d91fae664ba01ae08b1cff 100644 --- a/lib/manager/nuget/extract.ts +++ b/lib/manager/nuget/extract.ts @@ -1,7 +1,7 @@ import { logger } from '../../logger'; import { get } from '../../versioning'; import { PackageDependency, ExtractConfig, PackageFile } from '../common'; -import { VERSION_SCHEME_SEMVER } from '../../constants/version-schemes'; +import * as semverVersioning from '../../versioning/semver'; import { DATASOURCE_NUGET } from '../../constants/data-binary-source'; export function extractPackageFile( @@ -10,7 +10,7 @@ export function extractPackageFile( config: ExtractConfig = {} ): PackageFile { logger.trace(`nuget.extractPackageFile(${packageFile})`); - const { isVersion } = get(config.versionScheme || VERSION_SCHEME_SEMVER); + const { isVersion } = get(config.versioning || semverVersioning.id); const deps: PackageDependency[] = []; let lineNumber = 0; diff --git a/lib/manager/nvm/index.ts b/lib/manager/nvm/index.ts index 07648c91d2a0b3257cf5ef759d9431addc5d2266..17bf260096f55e734fb959f411b1db2e7e4e60f6 100644 --- a/lib/manager/nvm/index.ts +++ b/lib/manager/nvm/index.ts @@ -1,5 +1,5 @@ import { LANGUAGE_NODE } from '../../constants/languages'; -import { VERSION_SCHEME_NODE } from '../../constants/version-schemes'; +import * as nodeVersioning from '../../versioning/node'; export { extractPackageFile } from './extract'; export { updateDependency } from './update'; @@ -8,5 +8,5 @@ export const language = LANGUAGE_NODE; export const defaultConfig = { fileMatch: ['^.nvmrc$'], - versionScheme: VERSION_SCHEME_NODE, + versioning: nodeVersioning.id, }; diff --git a/lib/manager/poetry/index.ts b/lib/manager/poetry/index.ts index 1d827eaecd199ae7b55c9ecf8d79410d6d92aa06..ac7283999463946011028fadf5dcb99ceaafd35a 100644 --- a/lib/manager/poetry/index.ts +++ b/lib/manager/poetry/index.ts @@ -1,5 +1,5 @@ import { LANGUAGE_PYTHON } from '../../constants/languages'; -import { VERSION_SCHEME_POETRY } from '../../constants/version-schemes'; +import * as poetryVersioning from '../../versioning/poetry'; export { extractPackageFile } from './extract'; export { updateDependency } from './update'; @@ -9,6 +9,6 @@ export const language = LANGUAGE_PYTHON; export const supportsLockFileMaintenance = true; export const defaultConfig = { - versionScheme: VERSION_SCHEME_POETRY, + versioning: poetryVersioning.id, fileMatch: ['(^|/)pyproject\\.toml$'], }; diff --git a/lib/manager/pub/index.ts b/lib/manager/pub/index.ts index df8273074ec53e2d26432be6fba27d8d217d3d5f..3034fc824f688d10e8beee4d890736d758284efe 100644 --- a/lib/manager/pub/index.ts +++ b/lib/manager/pub/index.ts @@ -1,9 +1,9 @@ -import { VERSION_SCHEME_NPM } from '../../constants/version-schemes'; +import * as npmVersioning from '../../versioning/npm'; export { extractPackageFile } from './extract'; export { updateDependency } from './update'; export const defaultConfig = { fileMatch: ['(^|/)pubspec\\.ya?ml$'], - versionScheme: VERSION_SCHEME_NPM, + versioning: npmVersioning.id, }; diff --git a/lib/manager/ruby-version/index.ts b/lib/manager/ruby-version/index.ts index 303d6c674c73985dde1f91c8b4b4dac6e28f9f54..b6449b3afc89fd9244736e72f2a0af1734313c33 100644 --- a/lib/manager/ruby-version/index.ts +++ b/lib/manager/ruby-version/index.ts @@ -1,5 +1,5 @@ import { LANGUAGE_RUBY } from '../../constants/languages'; -import { VERSION_SCHEME_RUBY } from '../../constants/version-schemes'; +import * as rubyVersioning from '../../versioning/ruby'; export { extractPackageFile } from './extract'; export { updateDependency } from './update'; @@ -8,5 +8,5 @@ export const language = LANGUAGE_RUBY; export const defaultConfig = { fileMatch: ['(^|/)\\.ruby-version$'], - versionScheme: VERSION_SCHEME_RUBY, + versioning: rubyVersioning.id, }; diff --git a/lib/manager/sbt/extract.ts b/lib/manager/sbt/extract.ts index 5c0fc8653eabb8c058087129dac0d1a0417e5a88..81012dfd7fcfa94a290ec6650c442f09a6a8d8f0 100644 --- a/lib/manager/sbt/extract.ts +++ b/lib/manager/sbt/extract.ts @@ -1,7 +1,7 @@ import { DEFAULT_MAVEN_REPO } from '../maven/extract'; import { PackageFile, PackageDependency } from '../common'; import { get } from '../../versioning'; -import { VERSION_SCHEME_MAVEN } from '../../constants/version-schemes'; +import * as mavenVersioning from '../../versioning/maven'; import { DATASOURCE_SBT } from '../../constants/data-binary-source'; const isComment = (str: string): boolean => /^\s*\/\//.test(str); @@ -29,7 +29,7 @@ const getScalaVersion = (str: string): string => const normalizeScalaVersion = (str: string): string => { // istanbul ignore if if (!str) return str; - const versioning = get(VERSION_SCHEME_MAVEN); + const versioning = get(mavenVersioning.id); if (versioning.isVersion(str)) { // Do not normalize unstable versions if (!versioning.isStable(str)) return str; diff --git a/lib/manager/sbt/index.ts b/lib/manager/sbt/index.ts index 474a82554516bf0e1ce95d383d6f12ca64aedd69..213eb810cbcb0777580ba6bd735c7176bb81f516 100644 --- a/lib/manager/sbt/index.ts +++ b/lib/manager/sbt/index.ts @@ -1,4 +1,4 @@ -import { VERSION_SCHEME_IVY } from '../../constants/version-schemes'; +import * as ivyVersioning from '../../versioning/ivy'; export { extractPackageFile } from './extract'; export { updateDependency } from './update'; @@ -6,5 +6,5 @@ export { updateDependency } from './update'; export const defaultConfig = { fileMatch: ['\\.sbt$', 'project/[^/]*.scala$'], timeout: 300, - versionScheme: VERSION_SCHEME_IVY, + versioning: ivyVersioning.id, }; diff --git a/lib/manager/swift/index.ts b/lib/manager/swift/index.ts index 84460475224753ba06b51e19905f346c5a5ee904..3ed2e6a32c843fe0ad559dd352be8e587b4982a0 100644 --- a/lib/manager/swift/index.ts +++ b/lib/manager/swift/index.ts @@ -1,10 +1,10 @@ -import { VERSION_SCHEME_SWIFT } from '../../constants/version-schemes'; +import * as swiftVersioning from '../../versioning/swift'; export { extractPackageFile } from './extract'; export { updateDependency } from './update'; export const defaultConfig = { fileMatch: ['(^|/)Package\\.swift'], - versionScheme: VERSION_SCHEME_SWIFT, + versioning: swiftVersioning.id, rangeStrategy: 'bump', }; diff --git a/lib/manager/terraform/index.ts b/lib/manager/terraform/index.ts index 4d652ec159fd6693d999b1007d40a4bd2353b545..76e4cbde6b1430d05d0c0cb956ae6bdf6c83ec05 100644 --- a/lib/manager/terraform/index.ts +++ b/lib/manager/terraform/index.ts @@ -1,4 +1,4 @@ -import { VERSION_SCHEME_HASHICORP } from '../../constants/version-schemes'; +import * as hashicorpVersioning from '../../versioning/hashicorp'; export { extractPackageFile } from './extract'; export { updateDependency } from './update'; @@ -7,5 +7,5 @@ export const defaultConfig = { commitMessageTopic: 'Terraform {{managerData.terraformDependencyType}} {{depNameShort}}', fileMatch: ['\\.tf$'], - versionScheme: VERSION_SCHEME_HASHICORP, + versioning: hashicorpVersioning.id, }; diff --git a/lib/manager/travis/index.ts b/lib/manager/travis/index.ts index 520bdaffd90371f027f12cdfa7d2b067a04db631..2935084993a1d2ae1a86756e3787e6532d889e1f 100644 --- a/lib/manager/travis/index.ts +++ b/lib/manager/travis/index.ts @@ -1,5 +1,5 @@ import { LANGUAGE_NODE } from '../../constants/languages'; -import { VERSION_SCHEME_NODE } from '../../constants/version-schemes'; +import * as nodeVersioning from '../../versioning/node'; export { extractPackageFile } from './extract'; export { getPackageUpdates } from './package'; @@ -9,5 +9,5 @@ export const language = LANGUAGE_NODE; export const defaultConfig = { fileMatch: ['^.travis.yml$'], - versionScheme: VERSION_SCHEME_NODE, + versioning: nodeVersioning.id, }; diff --git a/lib/util/package-rules.ts b/lib/util/package-rules.ts index 253e2c4d3ab17c55f4554092961795fb8f65ce54..4c2bcd0d8a43a23c2d8ac15978d85d9ddfc78d99 100644 --- a/lib/util/package-rules.ts +++ b/lib/util/package-rules.ts @@ -1,12 +1,12 @@ import minimatch from 'minimatch'; import { logger } from '../logger'; -import * as versioning from '../versioning'; +import * as allVersioning from '../versioning'; import { mergeChildConfig, PackageRule, UpdateType } from '../config'; import { regEx } from './regex'; // TODO: move to `../config` export interface Config extends Record<string, any> { - versionScheme?: string; + versioning?: string; packageFile?: string; depType?: string; depTypes?: string[]; @@ -26,7 +26,7 @@ export interface Config extends Record<string, any> { function matchesRule(inputConfig: Config, packageRule: PackageRule): boolean { const { - versionScheme, + versioning, packageFile, depType, depTypes, @@ -190,7 +190,7 @@ function matchesRule(inputConfig: Config, packageRule: PackageRule): boolean { positiveMatch = true; } if (matchCurrentVersion) { - const version = versioning.get(versionScheme); + const version = allVersioning.get(versioning); const matchCurrentVersionStr = matchCurrentVersion.toString(); if (version.isVersion(matchCurrentVersionStr)) { let isMatch = false; diff --git a/lib/versioning/cargo/index.ts b/lib/versioning/cargo/index.ts index 1d959ec210cdffd427cd2a4e0a3ff260388d1ec1..cbe0c628b13bd792f97d1f5261d7a9d6788f2400 100644 --- a/lib/versioning/cargo/index.ts +++ b/lib/versioning/cargo/index.ts @@ -1,6 +1,7 @@ import { api as npm } from '../npm'; import { VersioningApi, NewValueConfig } from '../common'; +export const id = 'cargo'; export const displayName = 'Cargo'; export const urls = [ 'https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html', diff --git a/lib/versioning/composer/index.ts b/lib/versioning/composer/index.ts index 065007b3ac47a257b882eacdea71769bb7f971cc..ac65a39e8c0ff15a7a7a0f218d53409315907859 100644 --- a/lib/versioning/composer/index.ts +++ b/lib/versioning/composer/index.ts @@ -3,6 +3,7 @@ import { logger } from '../../logger'; import { api as npm } from '../npm'; import { VersioningApi, NewValueConfig } from '../common'; +export const id = 'composer'; export const displayName = 'Composer'; export const urls = [ 'https://getcomposer.org/doc/articles/versions.md', diff --git a/lib/versioning/docker/index.ts b/lib/versioning/docker/index.ts index fd7ba544f220f84f5d19d9c2a19fef36ed0aef6f..e53899ca1041d7f54698d41f30f07c2c85c19d0d 100644 --- a/lib/versioning/docker/index.ts +++ b/lib/versioning/docker/index.ts @@ -1,6 +1,7 @@ import * as generic from '../loose/generic'; import { VersioningApi } from '../common'; +export const id = 'docker'; export const displayName = 'Docker'; export const urls = [ 'https://docs.docker.com/engine/reference/commandline/tag/', diff --git a/lib/versioning/git/index.ts b/lib/versioning/git/index.ts index acef8725a41e87048b13db2a8d65592674d9726f..f6521de8c4e53a13d09201c3869c5c0964999d67 100644 --- a/lib/versioning/git/index.ts +++ b/lib/versioning/git/index.ts @@ -1,6 +1,7 @@ import * as generic from '../loose/generic'; import { VersioningApi } from '../common'; +export const id = 'git'; export const displayName = 'git'; export const urls = ['https://git-scm.com/']; export const supportsRanges = false; diff --git a/lib/versioning/hashicorp/index.ts b/lib/versioning/hashicorp/index.ts index 31f28d683f29d9e32b4226973b875b63de0f6e61..d04741b17eaef0cb778c4cef5e0fff63b1db6b56 100644 --- a/lib/versioning/hashicorp/index.ts +++ b/lib/versioning/hashicorp/index.ts @@ -1,6 +1,7 @@ import { api as npm } from '../npm'; import { VersioningApi, NewValueConfig } from '../common'; +export const id = 'hashicorp'; export const displayName = 'Hashicorp'; export const urls = [ 'https://www.terraform.io/docs/configuration/terraform.html#specifying-a-required-terraform-version', diff --git a/lib/versioning/hex/index.ts b/lib/versioning/hex/index.ts index a20d3c80cc2d3888a4a3ccf40106537c9fc27977..c47f2d37ef9eb42820bd9d05c0ca55e0aa9d950b 100644 --- a/lib/versioning/hex/index.ts +++ b/lib/versioning/hex/index.ts @@ -1,6 +1,7 @@ import { api as npm } from '../npm'; import { VersioningApi, NewValueConfig } from '../common'; +export const id = 'hex'; export const displayName = 'Hex'; export const urls = ['https://hexdocs.pm/elixir/Version.html']; export const supportsRanges = true; diff --git a/lib/versioning/index.ts b/lib/versioning/index.ts index 3f24f6670450ef5039ff43d263996d827ff020b3..7039d5ee18f25be50773429b60e6725b1159417a 100644 --- a/lib/versioning/index.ts +++ b/lib/versioning/index.ts @@ -8,51 +8,54 @@ import { export * from './common'; -const schemes: Record<string, VersioningApi | VersioningApiConstructor> = {}; +const allVersioning: Record< + string, + VersioningApi | VersioningApiConstructor +> = {}; -const versionSchemeList: string[] = []; +const versioningList: string[] = []; -export const getVersionSchemeList = (): string[] => versionSchemeList; +export const getVersioningList = (): string[] => versioningList; -const versionSchemes = fs +const versionings = fs .readdirSync(__dirname, { withFileTypes: true }) .filter(dirent => dirent.isDirectory()) .map(dirent => dirent.name) .sort(); -for (const scheme of versionSchemes) { +for (const versioning of versionings) { try { - schemes[scheme] = require('./' + scheme).api; // eslint-disable-line - versionSchemeList.push(scheme); + allVersioning[versioning] = require('./' + versioning).api; // eslint-disable-line + versioningList.push(versioning); } catch (err) /* istanbul ignore next */ { - logger.fatal({ err }, `Can not load version scheme "${scheme}".`); + logger.fatal({ err }, `Can not load versioning "${versioning}".`); process.exit(1); } } -export function get(versionScheme: string): VersioningApi { - if (!versionScheme) { - logger.debug('Missing versionScheme'); - return schemes.semver as VersioningApi; +export function get(versioning: string): VersioningApi { + if (!versioning) { + logger.debug('Missing versioning'); + return allVersioning.semver as VersioningApi; } - let schemeName: string; - let schemeConfig: string; - if (versionScheme.includes(':')) { - const versionSplit = versionScheme.split(':'); - schemeName = versionSplit.shift(); - schemeConfig = versionSplit.join(':'); + let versioningName: string; + let versioningConfig: string; + if (versioning.includes(':')) { + const versionSplit = versioning.split(':'); + versioningName = versionSplit.shift(); + versioningConfig = versionSplit.join(':'); } else { - schemeName = versionScheme; + versioningName = versioning; } - const scheme = schemes[schemeName]; - if (!scheme) { - logger.warn({ versionScheme }, 'Unknown version scheme'); - return schemes.semver as VersioningApi; + const theVersioning = allVersioning[versioningName]; + if (!theVersioning) { + logger.warn({ versioning }, 'Unknown versioning'); + return allVersioning.semver as VersioningApi; } // istanbul ignore if: needs an implementation - if (isVersioningApiConstructor(scheme)) { + if (isVersioningApiConstructor(theVersioning)) { // eslint-disable-next-line new-cap - return new scheme(schemeConfig); + return new theVersioning(versioningConfig); } - return scheme; + return theVersioning; } diff --git a/lib/versioning/ivy/index.ts b/lib/versioning/ivy/index.ts index 73efe931d36b795ccb703cde29fcce4edbd74068..336315c22dfbbe1c3729695928fa0381ef05051a 100644 --- a/lib/versioning/ivy/index.ts +++ b/lib/versioning/ivy/index.ts @@ -7,6 +7,7 @@ import { } from './parse'; import { VersioningApi } from '../common'; +export const id = 'ivy'; export const displayName = 'Ivy'; export const urls = ['https://ant.apache.org/ivy/']; export const supportsRanges = true; diff --git a/lib/versioning/loose/index.ts b/lib/versioning/loose/index.ts index 8304481a5541c2393290f7b3b5d0185bfcd4d3b7..83e3cffc26d5bcbe33938927315277184258d94d 100644 --- a/lib/versioning/loose/index.ts +++ b/lib/versioning/loose/index.ts @@ -1,6 +1,7 @@ import * as generic from './generic'; import { VersioningApi } from '../common'; +export const id = 'loose'; export const displayName = 'Loose'; export const urls = []; export const supportsRanges = false; diff --git a/lib/versioning/maven/index.ts b/lib/versioning/maven/index.ts index 8ea8d8148d7855a43ea46f091ee250866151f283..6be9fceefadb39b06d8d48eed752c82752f66500 100644 --- a/lib/versioning/maven/index.ts +++ b/lib/versioning/maven/index.ts @@ -14,6 +14,7 @@ import { } from './compare'; import { NewValueConfig, VersioningApi } from '../common'; +export const id = 'maven'; export const displayName = 'Maven'; export const urls = [ 'https://maven.apache.org/pom.html#Dependency_Version_Requirement_Specification', diff --git a/lib/versioning/node/index.ts b/lib/versioning/node/index.ts index 028427786a1567e35970e6cf98d4270340c597c7..125ac1c8379db9ccb7d992091ddaf7263069eb69 100644 --- a/lib/versioning/node/index.ts +++ b/lib/versioning/node/index.ts @@ -1,6 +1,7 @@ import npm, { isVersion, isValid } from '../npm'; import { NewValueConfig, VersioningApi } from '../common'; +export const id = 'node'; export const displayName = 'Node.js'; export const urls = []; export const supportsRanges = false; diff --git a/lib/versioning/npm/index.ts b/lib/versioning/npm/index.ts index 06a52c3061107124da1dab97adb2dbcb8dd70a8b..246a02549aa769c72dec3ee6598e5010354579c7 100644 --- a/lib/versioning/npm/index.ts +++ b/lib/versioning/npm/index.ts @@ -3,6 +3,7 @@ import { is as isStable } from 'semver-stable'; import { getNewValue } from './range'; import { VersioningApi } from '../common'; +export const id = 'npm'; export const displayName = 'npm'; export const urls = [ 'https://semver.org/', diff --git a/lib/versioning/nuget/index.ts b/lib/versioning/nuget/index.ts index 4769592cdb8f87dc3d5623a612acb048f068138e..2535e7f4269684e6fbea483a0040c8775c88264e 100644 --- a/lib/versioning/nuget/index.ts +++ b/lib/versioning/nuget/index.ts @@ -1,6 +1,7 @@ import * as generic from '../loose/generic'; import { VersioningApi } from '../common'; +export const id = 'nuget'; export const displayName = 'NuGet'; export const urls = [ 'https://docs.microsoft.com/en-us/nuget/concepts/package-versioning', diff --git a/lib/versioning/nuget/readme.md b/lib/versioning/nuget/readme.md index 4e680039cccdae0f203d4afb600524e616dbe193..105ea5ecf880381a7333e976e4678c2447f3ad0f 100644 --- a/lib/versioning/nuget/readme.md +++ b/lib/versioning/nuget/readme.md @@ -2,4 +2,4 @@ NuGet versioning matches as closely as possible to the version comparison that N NuGet supports SemVer 2.0.0, but permits versions with differing numbers of version parts. -Ranges are not yet supported by this version scheme, but they are defined in NuGet and could be supported in the future. +Ranges are not yet supported by this versioning, but they are defined in NuGet and could be supported in the future. diff --git a/lib/versioning/pep440/index.ts b/lib/versioning/pep440/index.ts index e7b700663ff889594d53dabf6281f5187d44afc4..eaa41d5e57f0921a53bdaa868e6ca1f871e1a9e9 100644 --- a/lib/versioning/pep440/index.ts +++ b/lib/versioning/pep440/index.ts @@ -3,6 +3,7 @@ import { filter } from '@renovate/pep440/lib/specifier'; import { getNewValue } from './range'; import { VersioningApi } from '../common'; +export const id = 'pep440'; export const displayName = 'PEP440'; export const urls = ['https://www.python.org/dev/peps/pep-0440/']; export const supportsRanges = true; diff --git a/lib/versioning/poetry/index.ts b/lib/versioning/poetry/index.ts index 3c976a54fb1cee37dba368462ce1827d7b03a928..7539bc13f0685254ac91ff95761d7429c24e9c7c 100644 --- a/lib/versioning/poetry/index.ts +++ b/lib/versioning/poetry/index.ts @@ -3,6 +3,7 @@ import { major, minor } from 'semver'; import { api as npm } from '../npm'; import { NewValueConfig, VersioningApi } from '../common'; +export const id = 'poetry'; export const displayName = 'Poetry'; export const urls = ['https://python-poetry.org/docs/versions/']; export const supportsRanges = true; diff --git a/lib/versioning/regex/index.ts b/lib/versioning/regex/index.ts index 1c937e9edb5d5f07b71dab82339666cae278fc96..67462d0ab5702d82ace55a19adc566a18906cec4 100644 --- a/lib/versioning/regex/index.ts +++ b/lib/versioning/regex/index.ts @@ -4,6 +4,7 @@ import { GenericVersion, GenericVersioningApi } from '../loose/generic'; import { regEx } from '../../util/regex'; import { CONFIG_VALIDATION } from '../../constants/error-messages'; +export const id = 'regex'; export const displayName = 'Regular Expression'; export const urls = []; export const supportsRanges = false; @@ -35,7 +36,7 @@ export class RegExpVersioningApi extends GenericVersioningApi<RegExpVersion> { // RegExp('^(?<major>\\d+)\\.(?<minor>\\d+)\\.(?<patch>\\d+)(-(?<prerelease>.*))?$') // * emulates the "docker" configuration: // RegExp('^(?<major>\\d+)\\.(?<minor>\\d+)\\.(?<patch>\\d+)(-(?<compatibility>.*))?$') - // * matches the versioning scheme used by the Python images on DockerHub: + // * matches the versioning approach used by the Python images on DockerHub: // RegExp('^(?<major>\\d+)\\.(?<minor>\\d+)\\.(?<patch>\\d+)(?<prerelease>[^.-]+)?(-(?<compatibility>.*))?$'); private _config: RegExp = null; @@ -55,7 +56,7 @@ export class RegExpVersioningApi extends GenericVersioningApi<RegExpVersion> { const error = new Error(CONFIG_VALIDATION); error.configFile = new_config; error.validationError = - 'regex versionScheme needs at least one major, minor or patch group defined'; + 'regex versioning needs at least one major, minor or patch group defined'; throw error; } diff --git a/lib/versioning/regex/readme.md b/lib/versioning/regex/readme.md index 6b44b52b3527c7a7868ac079a76d05a81d205071..aafe9fbf10f10b6784afcc8be31447d6abf1633c 100644 --- a/lib/versioning/regex/readme.md +++ b/lib/versioning/regex/readme.md @@ -15,7 +15,7 @@ Here is an example of using `regex` versioning to correct behavior of the `guava "packageRules": [ { "packageNames": ["com.google.guava:guava"], - "versionScheme": "regex:^(?<major>\\d+)(\\.(?<minor>\\d+))?(\\.(?<patch>\\d+))?(-(?<compatibility>.*))?$" + "versioning": "regex:^(?<major>\\d+)(\\.(?<minor>\\d+))?(\\.(?<patch>\\d+))?(-(?<compatibility>.*))?$" } ] } @@ -29,7 +29,7 @@ Here is another example, this time for handling `python` Docker images, which us { "datasources": ["docker"], "packageNames": ["python"], - "versionScheme": "regex:^(?<major>\\d+)\\.(?<minor>\\d+)\\.(?<patch>\\d+)(?<prerelease>[^.-]+)?(-(?<compatibility>.*))?$" + "versioning": "regex:^(?<major>\\d+)\\.(?<minor>\\d+)\\.(?<patch>\\d+)(?<prerelease>[^.-]+)?(-(?<compatibility>.*))?$" } ] } diff --git a/lib/versioning/ruby/index.ts b/lib/versioning/ruby/index.ts index cb549aaca95183cc939dcb67eb118bf43728f743..06e9e0b7d4c2b2bb7fa9bd4f6f53baa958eb6180 100644 --- a/lib/versioning/ruby/index.ts +++ b/lib/versioning/ruby/index.ts @@ -13,6 +13,7 @@ import { parse as parseRange, ltr } from './range'; import { isSingleOperator, isValidOperator } from './operator'; import { pin, bump, replace } from './strategies'; +export const id = 'ruby'; export const displayName = 'Ruby'; export const urls = [ 'https://guides.rubygems.org/patterns/', diff --git a/lib/versioning/semver/index.ts b/lib/versioning/semver/index.ts index c93d263dac6fd588d6ceff2d32d636ec4002ef4e..f95ea3e9c1b129b151e944e137355741c94768fa 100644 --- a/lib/versioning/semver/index.ts +++ b/lib/versioning/semver/index.ts @@ -2,6 +2,7 @@ import semver from 'semver'; import stable from 'semver-stable'; import { NewValueConfig, VersioningApi } from '../common'; +export const id = 'semver'; export const displayName = 'Semantic'; export const urls = ['https://semver.org/']; export const supportsRanges = false; diff --git a/lib/versioning/swift/index.ts b/lib/versioning/swift/index.ts index e7e06022151fb5c9a6d36af970a5e483bbedb79c..345a640aabf73c9cae2ed258f05b5bb90a301d74 100644 --- a/lib/versioning/swift/index.ts +++ b/lib/versioning/swift/index.ts @@ -3,6 +3,7 @@ import stable from 'semver-stable'; import { toSemverRange, getNewValue } from './range'; import { VersioningApi } from '../common'; +export const id = 'swift'; export const displayName = 'Swift'; export const urls = ['https://swift.org/package-manager/']; export const supportsRanges = true; diff --git a/lib/workers/pr/body/common.ts b/lib/workers/pr/body/common.ts index 0aceae4fc81005f9f5a89aaf37dac576c0b6d67f..1e70914c6fc0988377794c8557adb3b766472ce6 100644 --- a/lib/workers/pr/body/common.ts +++ b/lib/workers/pr/body/common.ts @@ -9,7 +9,7 @@ export type PrBodyUpgrade = LookupUpdate & depName?: string; depNameLinked?: string; references?: string; - versionScheme: string; + versioning: string; stabilityDays?: number; }; diff --git a/lib/workers/pr/body/index.ts b/lib/workers/pr/body/index.ts index 052ea8f5383088f2f364c1135d7e8e6ee03a6af4..7d7d3903237fc547f69ebfae3a0f7a1a8d672108 100644 --- a/lib/workers/pr/body/index.ts +++ b/lib/workers/pr/body/index.ts @@ -50,11 +50,11 @@ function massageUpdateMetadata(config: PrBodyConfig): void { references.push(`[changelog](${changelogUrl})`); } upgrade.references = references.join(', '); - const { fromVersion, toVersion, updateType, versionScheme } = upgrade; + const { fromVersion, toVersion, updateType, versioning } = upgrade; // istanbul ignore if if (updateType === 'minor') { try { - const version = get(versionScheme); + const version = get(versioning); if (version.getMinor(fromVersion) === version.getMinor(toVersion)) { upgrade.updateType = 'patch'; } diff --git a/lib/workers/pr/changelog/common.ts b/lib/workers/pr/changelog/common.ts index 110e17fc951dda5ddcfb7e52715048e548de1229..0d5b54fbf64bc509478e90273d12d5bd8747dc68 100644 --- a/lib/workers/pr/changelog/common.ts +++ b/lib/workers/pr/changelog/common.ts @@ -50,6 +50,6 @@ export interface ChangeLogConfig { releases: Release[]; sourceUrl?: string; toVersion: string; - versionScheme: string; + versioning: string; changeLogError?: ChangeLogError; } diff --git a/lib/workers/pr/changelog/index.ts b/lib/workers/pr/changelog/index.ts index 40a69f31ccbaffa9a2802e8d9df546a4dd5c5102..750c4fea090beb4bb2c21b26a4ecd974148c2b6b 100644 --- a/lib/workers/pr/changelog/index.ts +++ b/lib/workers/pr/changelog/index.ts @@ -1,5 +1,5 @@ import { logger } from '../../../logger'; -import * as versioning from '../../../versioning'; +import * as allVersioning from '../../../versioning'; import * as sourceGithub from './source-github'; import { getReleases } from './releases'; import { ChangeLogConfig, ChangeLogResult } from './common'; @@ -9,11 +9,11 @@ export * from './common'; export async function getChangeLogJSON( args: ChangeLogConfig ): Promise<ChangeLogResult | null> { - const { sourceUrl, versionScheme, fromVersion, toVersion } = args; + const { sourceUrl, versioning, fromVersion, toVersion } = args; if (!sourceUrl) { return null; } - const version = versioning.get(versionScheme); + const version = allVersioning.get(versioning); if (!fromVersion || version.equals(fromVersion, toVersion)) { return null; } diff --git a/lib/workers/pr/changelog/releases.ts b/lib/workers/pr/changelog/releases.ts index 941b6573c0768d43b64e776f8443c2fbdf1c724d..e041eab99ce5b3eddc67193d00b365e1833d53ed 100644 --- a/lib/workers/pr/changelog/releases.ts +++ b/lib/workers/pr/changelog/releases.ts @@ -28,10 +28,10 @@ export type ReleaseConfig = PkgReleaseConfig & { export async function getReleases( config: ReleaseConfig ): Promise<Release[] | null> { - const { versionScheme, fromVersion, toVersion, depName, datasource } = config; + const { versioning, fromVersion, toVersion, depName, datasource } = config; try { const pkgReleases = (await getPkgReleases(config)).releases; - const version = get(versionScheme); + const version = get(versioning); const releases = pkgReleases .filter(release => version.isCompatible(release.version, fromVersion)) diff --git a/lib/workers/pr/changelog/source-github.ts b/lib/workers/pr/changelog/source-github.ts index 5e289fe3ffd5509b659de8632cbd6713fa28057e..f6e7ac261336ef5028bf8f94b5f432f17ef557e6 100644 --- a/lib/workers/pr/changelog/source-github.ts +++ b/lib/workers/pr/changelog/source-github.ts @@ -2,7 +2,7 @@ import URL from 'url'; import { api } from '../../../platform/github/gh-got-wrapper'; import { logger } from '../../../logger'; import * as hostRules from '../../../util/host-rules'; -import * as versioning from '../../../versioning'; +import * as allVersioning from '../../../versioning'; import { addReleaseNotes } from './release-notes'; import { ChangeLogConfig, @@ -17,7 +17,7 @@ const { get: ghGot } = api; async function getTags( endpoint: string, - versionScheme: string, + versioning: string, repository: string ): Promise<string[]> { let url = endpoint @@ -50,7 +50,7 @@ async function getTags( export async function getChangeLogJSON({ endpoint, - versionScheme, + versioning, fromVersion, toVersion, sourceUrl, @@ -62,7 +62,7 @@ export async function getChangeLogJSON({ logger.debug('No release notes for @types'); return null; } - const version = versioning.get(versionScheme); + const version = allVersioning.get(versioning); const { protocol, host, pathname } = URL.parse(sourceUrl); const githubBaseURL = `${protocol}//${host}/`; const url = sourceUrl.startsWith('https://github.com/') @@ -113,7 +113,7 @@ export async function getChangeLogJSON({ async function getRef(release: Release): Promise<string | null> { if (!tags) { - tags = await getTags(endpoint, versionScheme, repository); + tags = await getTags(endpoint, versioning, repository); } const regex = new RegExp(`${depName}[@-]`); const tagName = tags diff --git a/lib/workers/repository/init/vulnerability.ts b/lib/workers/repository/init/vulnerability.ts index 8e55f6cade19f08dc43edc6f6e08bb99ec93bc2f..dc9d0c651cdfcb35bb6309831d546d50f1909789 100644 --- a/lib/workers/repository/init/vulnerability.ts +++ b/lib/workers/repository/init/vulnerability.ts @@ -1,15 +1,14 @@ import { logger } from '../../../logger'; -import * as versioning from '../../../versioning'; +import * as allVersioning from '../../../versioning'; import { platform } from '../../../platform'; import { RenovateConfig } from '../../../config'; import { REPOSITORY_NO_VULNERABILITY } from '../../../constants/error-messages'; -import { - VERSION_SCHEME_MAVEN, - VERSION_SCHEME_NPM, - VERSION_SCHEME_PEP440, - VERSION_SCHEME_RUBY, - VERSION_SCHEME_SEMVER, -} from '../../../constants/version-schemes'; +import * as mavenVersioning from '../../../versioning/maven'; +import * as npmVersioning from '../../../versioning/npm'; +import * as pep440Versioning from '../../../versioning/pep440'; +import * as rubyVersioning from '../../../versioning/ruby'; +import * as semverVersioning from '../../../versioning/semver'; + import { DATASOURCE_MAVEN, DATASOURCE_NPM, @@ -77,14 +76,14 @@ export async function detectVulnerabilityAlerts( } const firstPatchedVersion = alert.securityVulnerability.firstPatchedVersion.identifier; - const versionSchemes = { - maven: VERSION_SCHEME_MAVEN, - npm: VERSION_SCHEME_NPM, - nuget: VERSION_SCHEME_SEMVER, - pip_requirements: VERSION_SCHEME_PEP440, - rubygems: VERSION_SCHEME_RUBY, + const versionings = { + maven: mavenVersioning.id, + npm: npmVersioning.id, + nuget: semverVersioning.id, + pip_requirements: pep440Versioning.id, + rubygems: rubyVersioning.id, }; - const version = versioning.get(versionSchemes[datasource]); + const version = allVersioning.get(versionings[datasource]); if (version.isVersion(firstPatchedVersion)) { if (combinedAlerts[datasource][depName].firstPatchedVersion) { if ( diff --git a/lib/workers/repository/process/lookup/filter.ts b/lib/workers/repository/process/lookup/filter.ts index 4b495e735a6810b8f92faa6e3742ebb0a22b229b..afa0e1b0cfe13b49281f84d111bed122dc9c1dbe 100644 --- a/lib/workers/repository/process/lookup/filter.ts +++ b/lib/workers/repository/process/lookup/filter.ts @@ -1,9 +1,9 @@ import * as semver from 'semver'; import { logger } from '../../../../logger'; -import * as versioning from '../../../../versioning'; +import * as allVersioning from '../../../../versioning'; import { Release } from '../../../../datasource'; import { CONFIG_VALIDATION } from '../../../../constants/error-messages'; -import { VERSION_SCHEME_NPM } from '../../../../constants/version-schemes'; +import * as npmVersioning from '../../../../versioning/npm'; export interface FilterConfig { allowedVersions?: string; @@ -12,7 +12,7 @@ export interface FilterConfig { ignoreDeprecated?: boolean; ignoreUnstable?: boolean; respectLatest?: boolean; - versionScheme: string; + versioning: string; } export function filterVersions( @@ -23,13 +23,13 @@ export function filterVersions( releases: Release[] ): string[] { const { - versionScheme, + versioning, ignoreUnstable, ignoreDeprecated, respectLatest, allowedVersions, } = config; - const version = versioning.get(versionScheme); + const version = allVersioning.get(versioning); if (!fromVersion) { return []; } @@ -60,7 +60,7 @@ export function filterVersions( version.matches(v, allowedVersions) ); } else if ( - versionScheme !== VERSION_SCHEME_NPM && + versioning !== npmVersioning.id && semver.validRange(allowedVersions) ) { logger.debug( diff --git a/lib/workers/repository/process/lookup/index.ts b/lib/workers/repository/process/lookup/index.ts index de6c5d8ddeb26907ef22a1193d2363021d3a59a5..be54c177d81568cfa162b49d66b9ba07a05f4f7f 100644 --- a/lib/workers/repository/process/lookup/index.ts +++ b/lib/workers/repository/process/lookup/index.ts @@ -1,5 +1,5 @@ import { logger } from '../../../../logger'; -import * as versioning from '../../../../versioning'; +import * as allVersioning from '../../../../versioning'; import { getRollbackUpdate, RollbackConfig } from './rollback'; import { getRangeStrategy } from '../../../../manager'; import { filterVersions, FilterConfig } from './filter'; @@ -56,8 +56,8 @@ function getType( fromVersion: string, toVersion: string ): string { - const { versionScheme, rangeStrategy, currentValue } = config; - const version = versioning.get(versionScheme); + const { versioning, rangeStrategy, currentValue } = config; + const version = allVersioning.get(versioning); if (rangeStrategy === 'bump' && version.matches(toVersion, currentValue)) { return 'bump'; } @@ -82,8 +82,8 @@ function getFromVersion( latestVersion: string, allVersions: string[] ): string | null { - const { currentValue, lockedVersion, versionScheme } = config; - const version = versioning.get(versionScheme); + const { currentValue, lockedVersion, versioning } = config; + const version = allVersioning.get(versioning); if (version.isVersion(currentValue)) { return currentValue; } @@ -134,7 +134,7 @@ export async function lookupUpdates( ): Promise<UpdateResult> { const { depName, currentValue, lockedVersion, vulnerabilityAlert } = config; logger.trace({ dependency: depName, currentValue }, 'lookupUpdates'); - const version = versioning.get(config.versionScheme); + const version = allVersioning.get(config.versioning); const res: UpdateResult = { updates: [], warnings: [] } as any; if (version.isValid(currentValue)) { const dependency = clone(await getPkgReleases(config)); @@ -172,7 +172,7 @@ export async function lookupUpdates( res.dockerRepository = dependency.dockerRepository; } const { latestVersion, releases } = dependency; - // Filter out any results from datasource that don't comply with our versioning scheme + // Filter out any results from datasource that don't comply with our versioning let allVersions = releases .map(release => release.version) .filter(v => version.isVersion(v)); diff --git a/lib/workers/repository/process/lookup/rollback.ts b/lib/workers/repository/process/lookup/rollback.ts index 6b7b07bcce1f74ff3d13bebe35f8d71747e394ca..d8c313858830966fe92ea699d9a9dca7e3f32a12 100644 --- a/lib/workers/repository/process/lookup/rollback.ts +++ b/lib/workers/repository/process/lookup/rollback.ts @@ -1,25 +1,25 @@ import { logger } from '../../../../logger'; -import * as versioning from '../../../../versioning'; +import * as allVersioning from '../../../../versioning'; import { LookupUpdate } from './common'; export interface RollbackConfig { currentValue?: string; depName?: string; packageFile: string; - versionScheme: string; + versioning: string; } export function getRollbackUpdate( config: RollbackConfig, versions: string[] ): LookupUpdate { - const { packageFile, versionScheme, depName, currentValue } = config; - const version = versioning.get(versionScheme); + const { packageFile, versioning, depName, currentValue } = config; + const version = allVersioning.get(versioning); // istanbul ignore if if (!('isLessThanRange' in version)) { logger.info( - { versionScheme }, - 'Current version scheme does not support isLessThanRange()' + { versioning }, + 'Current versioning does not support isLessThanRange()' ); return null; } diff --git a/test/config/__snapshots__/migration.spec.ts.snap b/test/config/__snapshots__/migration.spec.ts.snap index 0408283bbf2e640e3b575d3df1357fd21049472d..72831385e7b8770e4f5f3d84c02e953bc01cd32f 100644 --- a/test/config/__snapshots__/migration.spec.ts.snap +++ b/test/config/__snapshots__/migration.spec.ts.snap @@ -84,6 +84,12 @@ Object { "ang", ], }, + Object { + "packageNames": Array [ + "guava", + ], + "versioning": "maven", + }, Object { "depTypeList": Array [ "peerDependencies", @@ -120,6 +126,9 @@ Object { "automerge": true, }, "platform": "github", + "poetry": Object { + "versioning": "pep440", + }, "postUpdateOptions": Array [ "gomodTidy", ], diff --git a/test/config/migration.spec.ts b/test/config/migration.spec.ts index 5bf1ef615d27a21abfcf3cd98e076e18fa77d36d..a04b72e2a4fdc292e3993c6064c4442b1bbbea7a 100644 --- a/test/config/migration.spec.ts +++ b/test/config/migration.spec.ts @@ -41,6 +41,9 @@ describe('config/migration', () => { node: { enabled: true, }, + poetry: { + versionScheme: 'pep440', + }, meteor: true, autodiscover: 'true' as never, schedule: 'on the last day of the month' as never, @@ -72,6 +75,10 @@ describe('config/migration', () => { packagePattern: 'ang', enabled: false, }, + { + packageNames: ['guava'], + versionScheme: 'maven', + }, ], exposeEnv: true, lockFileMaintenance: { @@ -112,7 +119,7 @@ describe('config/migration', () => { expect(isMigrated).toBe(true); expect(migratedConfig.depTypes).not.toBeDefined(); expect(migratedConfig.automerge).toEqual(false); - expect(migratedConfig.packageRules).toHaveLength(7); + expect(migratedConfig.packageRules).toHaveLength(8); expect(migratedConfig.hostRules).toHaveLength(1); }); it('migrates before and after schedules', () => { diff --git a/test/versioning/__snapshots__/index.spec.ts.snap b/test/versioning/__snapshots__/index.spec.ts.snap index 17ac4c295a332306369cdb2674221eea49a6edfb..19797c1795ecdc4ceddbd30e4c6a0a3f5173f930 100644 --- a/test/versioning/__snapshots__/index.spec.ts.snap +++ b/test/versioning/__snapshots__/index.spec.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`versioning.get(versionScheme) has api 1`] = ` +exports[`allVersioning.get(versioning) has api 1`] = ` Array [ "equals", "getMajor", diff --git a/test/versioning/index.spec.ts b/test/versioning/index.spec.ts index 6a07d4ec2d954b60c0ce5625e2b25fd1cbfb9094..e17c19039f45034942d02c9a4b50c2777f4f24d9 100644 --- a/test/versioning/index.spec.ts +++ b/test/versioning/index.spec.ts @@ -1,31 +1,31 @@ -import * as versioning from '../../lib/versioning'; +import * as allVersioning from '../../lib/versioning'; import { getOptions } from '../../lib/config/definitions'; import { GenericVersioningApi, GenericVersion, } from '../../lib/versioning/loose/generic'; -import { VERSION_SCHEME_SEMVER } from '../../lib/constants/version-schemes'; +import * as semverVersioning from '../../lib/versioning/semver'; const supportedSchemes = getOptions().find( - option => option.name === 'versionScheme' + option => option.name === 'versioning' ).allowedValues; -describe('versioning.get(versionScheme)', () => { +describe('allVersioning.get(versioning)', () => { it('has api', () => { - expect(Object.keys(versioning.get('semver')).sort()).toMatchSnapshot(); + expect(Object.keys(allVersioning.get('semver')).sort()).toMatchSnapshot(); }); it('should fallback to semver', () => { - expect(versioning.get(undefined)).toBe( - versioning.get(VERSION_SCHEME_SEMVER) + expect(allVersioning.get(undefined)).toBe( + allVersioning.get(semverVersioning.id) ); - expect(versioning.get('unknown')).toBe( - versioning.get(VERSION_SCHEME_SEMVER) + expect(allVersioning.get('unknown')).toBe( + allVersioning.get(semverVersioning.id) ); }); it('should accept config', () => { - expect(versioning.get('semver:test')).toBeDefined(); + expect(allVersioning.get('semver:test')).toBeDefined(); }); describe('should return the same interface', () => { @@ -41,7 +41,7 @@ describe('versioning.get(versionScheme)', () => { 'toString', 'valueOf', ]; - const npmApi = Object.keys(versioning.get(VERSION_SCHEME_SEMVER)) + const npmApi = Object.keys(allVersioning.get(semverVersioning.id)) .filter(val => !optionalFunctions.includes(val)) .sort(); @@ -63,7 +63,9 @@ describe('versioning.get(versionScheme)', () => { for (const supportedScheme of supportedSchemes) { it(supportedScheme, () => { - const schemeKeys = getAllPropertyNames(versioning.get(supportedScheme)) + const schemeKeys = getAllPropertyNames( + allVersioning.get(supportedScheme) + ) .filter( val => !optionalFunctions.includes(val) && !val.startsWith('_') ) @@ -73,10 +75,10 @@ describe('versioning.get(versionScheme)', () => { const apiOrCtor = require('../../lib/versioning/' + supportedScheme) .api; - if (versioning.isVersioningApiConstructor(apiOrCtor)) return; + if (allVersioning.isVersioningApiConstructor(apiOrCtor)) return; expect(Object.keys(apiOrCtor).sort()).toEqual( - Object.keys(versioning.get(supportedScheme)).sort() + Object.keys(allVersioning.get(supportedScheme)).sort() ); }); } diff --git a/test/versioning/versioning-metadata.spec.ts b/test/versioning/versioning-metadata.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..dbacb0e3bfe297487445f9e971984db1069a1342 --- /dev/null +++ b/test/versioning/versioning-metadata.spec.ts @@ -0,0 +1,38 @@ +import { readdir, readFile } from 'fs-extra'; + +describe('versioning metadata', () => { + it('readme no markdown headers', async () => { + const allVersioning = (await readdir('lib/versioning')).filter( + item => !item.includes('.') + ); + for (const versioning of allVersioning) { + let readme: string; + try { + readme = await readFile( + 'lib/versioning/' + versioning + '/readme.md', + 'utf8' + ); + } catch (err) { + // ignore missing file + } + if (readme) { + expect(RegExp(/(^|\n)#+ /).exec(readme)).toBe(null); + } + } + }); + it('contains mandatory fields', async () => { + const allVersioning = (await readdir('lib/versioning')).filter( + item => !item.includes('.') + ); + for (const versioning of allVersioning) { + const versioningObj = require(`../../lib/versioning/${versioning}`); + expect(versioningObj.id).toEqual(versioning); + expect(versioningObj.displayName).toBeDefined(); + expect(versioningObj.urls).toBeDefined(); + expect(versioningObj.supportsRanges).toBeDefined(); + if (versioningObj.supportsRanges === true) { + expect(versioningObj.supportedRangeStrategies).toBeDefined(); + } + } + }); +}); diff --git a/test/versioning/versioning-readmes.spec.ts b/test/versioning/versioning-readmes.spec.ts deleted file mode 100644 index 35b0d717f90f3df08c26296e334732df7652c150..0000000000000000000000000000000000000000 --- a/test/versioning/versioning-readmes.spec.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { readdir, readFile } from 'fs-extra'; - -describe('versioning metadata', () => { - it('readme no markdown headers', async () => { - const managers = (await readdir('lib/versioning')).filter( - item => !item.includes('.') - ); - for (const manager of managers) { - let readme: string; - try { - readme = await readFile( - 'lib/versioning/' + manager + '/readme.md', - 'utf8' - ); - } catch (err) { - // ignore missing file - } - if (readme) { - expect(RegExp(/(^|\n)#+ /).exec(readme)).toBe(null); - } - } - }); - it('mandatory fields', async () => { - const managers = (await readdir('lib/versioning')).filter( - item => !item.includes('.') - ); - for (const manager of managers) { - const managerObj = require(`../../lib/versioning/${manager}`); - expect(managerObj.displayName).toBeDefined(); - expect(managerObj.urls).toBeDefined(); - expect(managerObj.supportsRanges).toBeDefined(); - if (managerObj.supportsRanges === true) { - expect(managerObj.supportedRangeStrategies).toBeDefined(); - } - } - }); -}); diff --git a/test/workers/pr/changelog/index.spec.ts b/test/workers/pr/changelog/index.spec.ts index 1d462a4bcefdf5aa27b2c5377bd3554ffa4a31fd..6a3e13057cf1d52c413fd9e481b3a9fcf20e5325 100644 --- a/test/workers/pr/changelog/index.spec.ts +++ b/test/workers/pr/changelog/index.spec.ts @@ -7,7 +7,7 @@ import { } from '../../../../lib/workers/pr/changelog'; import { mocked } from '../../../util'; import { PLATFORM_TYPE_GITHUB } from '../../../../lib/constants/platforms'; -import { VERSION_SCHEME_SEMVER } from '../../../../lib/constants/version-schemes'; +import * as semverVersioning from '../../../../lib/versioning/semver'; jest.mock('../../../../lib/platform/github/gh-got-wrapper'); jest.mock('../../../../lib/datasource/npm'); @@ -17,7 +17,7 @@ const ghGot = mocked(api).get; const upgrade: ChangeLogConfig = { endpoint: 'https://api.github.com/', depName: 'renovate', - versionScheme: VERSION_SCHEME_SEMVER, + versioning: semverVersioning.id, fromVersion: '1.0.0', toVersion: '3.0.0', sourceUrl: 'https://github.com/chalk/chalk', diff --git a/test/workers/pr/changelog/releases.spec.ts b/test/workers/pr/changelog/releases.spec.ts index dad684faccdeda5a503e652a5a5d2af69c8abb7a..cfe44276ddc2fa0574b4337fc50f5b7c71f523dc 100644 --- a/test/workers/pr/changelog/releases.spec.ts +++ b/test/workers/pr/changelog/releases.spec.ts @@ -1,10 +1,8 @@ import * as releases from '../../../../lib/workers/pr/changelog/releases'; import * as datasource from '../../../../lib/datasource'; import { mocked } from '../../../util'; -import { - VERSION_SCHEME_DOCKER, - VERSION_SCHEME_NPM, -} from '../../../../lib/constants/version-schemes'; +import * as dockerVersioning from '../../../../lib/versioning/docker'; +import * as npmVersioning from '../../../../lib/versioning/npm'; jest.mock('../../../../lib/datasource'); @@ -44,7 +42,7 @@ describe('workers/pr/changelog/releases', () => { }); it('should contain only stable', async () => { const config = { - versionScheme: VERSION_SCHEME_NPM, + versioning: npmVersioning.id, fromVersion: '1.0.0', toVersion: '1.1.0', }; @@ -54,7 +52,7 @@ describe('workers/pr/changelog/releases', () => { }); it('should contain fromVersion unstable', async () => { const config = { - versionScheme: VERSION_SCHEME_NPM, + versioning: npmVersioning.id, fromVersion: '1.0.1-rc0', toVersion: '1.1.0', }; @@ -64,7 +62,7 @@ describe('workers/pr/changelog/releases', () => { }); it('should contain toVersion unstable', async () => { const config = { - versionScheme: VERSION_SCHEME_NPM, + versioning: npmVersioning.id, fromVersion: '1.0.1', toVersion: '1.2.0-rc1', }; @@ -74,7 +72,7 @@ describe('workers/pr/changelog/releases', () => { }); it('should contain both fromVersion toVersion unstable', async () => { const config = { - versionScheme: VERSION_SCHEME_NPM, + versioning: npmVersioning.id, fromVersion: '1.0.1-rc0', toVersion: '1.2.0-rc1', }; @@ -84,7 +82,7 @@ describe('workers/pr/changelog/releases', () => { }); it('should valueToVersion', async () => { const config = { - versionScheme: VERSION_SCHEME_DOCKER, + versioning: dockerVersioning.id, fromVersion: '1.0.1-rc0', toVersion: '1.2.0-rc0', }; diff --git a/test/workers/repository/process/lookup/index.spec.ts b/test/workers/repository/process/lookup/index.spec.ts index 2324380d1cb64d6331c4cea18e35169d5a0e48a0..79d3945f4da8db5c998a67427c629a9a05fd82b7 100644 --- a/test/workers/repository/process/lookup/index.spec.ts +++ b/test/workers/repository/process/lookup/index.spec.ts @@ -11,12 +11,10 @@ import * as _docker from '../../../../../lib/datasource/docker'; import * as _gitSubmodules from '../../../../../lib/datasource/git-submodules'; import { mocked, getConfig } from '../../../../util'; import { CONFIG_VALIDATION } from '../../../../../lib/constants/error-messages'; -import { - VERSION_SCHEME_DOCKER, - VERSION_SCHEME_GIT, - VERSION_SCHEME_NPM, - VERSION_SCHEME_PEP440, -} from '../../../../../lib/constants/version-schemes'; +import * as dockerVersioning from '../../../../../lib/versioning/docker'; +import * as gitVersioning from '../../../../../lib/versioning/git'; +import * as npmVersioning from '../../../../../lib/versioning/npm'; +import * as pep440Versioning from '../../../../../lib/versioning/pep440'; import { DATASOURCE_DOCKER, @@ -41,7 +39,7 @@ describe('workers/repository/process/lookup', () => { beforeEach(() => { config = getConfig(); config.manager = 'npm'; - config.versionScheme = VERSION_SCHEME_NPM; + config.versioning = npmVersioning.id; config.rangeStrategy = 'replace'; global.repoCache = {}; jest.resetAllMocks(); @@ -179,7 +177,7 @@ describe('workers/repository/process/lookup', () => { config.currentValue = '0.4.0'; config.allowedVersions = '<1'; config.depName = 'q'; - config.versionScheme = VERSION_SCHEME_DOCKER; // this doesn't make sense but works for this test + config.versioning = dockerVersioning.id; // this doesn't make sense but works for this test config.datasource = DATASOURCE_NPM; // this doesn't make sense but works for this test nock('https://registry.npmjs.org') .get('/q') @@ -1029,9 +1027,9 @@ describe('workers/repository/process/lookup', () => { }); it('handles PEP440', async () => { config.manager = 'pip_requirements'; - config.versionScheme = VERSION_SCHEME_PEP440; + config.versioning = pep440Versioning.id; config.manager = 'pip_requirements'; - config.versionScheme = 'pep440'; + config.versioning = 'pep440'; config.rangeStrategy = 'pin'; config.lockedVersion = '0.9.4'; config.currentValue = '~=0.9'; @@ -1124,7 +1122,7 @@ describe('workers/repository/process/lookup', () => { it('skips uncompatible versions for ' + currentValue, async () => { config.currentValue = currentValue; config.depName = 'node'; - config.versionScheme = VERSION_SCHEME_DOCKER; + config.versioning = dockerVersioning.id; config.datasource = DATASOURCE_DOCKER; docker.getPkgReleases.mockResolvedValueOnce({ releases: [ @@ -1251,7 +1249,7 @@ describe('workers/repository/process/lookup', () => { expect(res).toMatchSnapshot(); }); it('handles git submodule update', async () => { - config.versionScheme = VERSION_SCHEME_GIT; + config.versioning = gitVersioning.id; config.datasource = DATASOURCE_GIT_SUBMODULES; gitSubmodules.getPkgReleases.mockResolvedValueOnce({ releases: [