diff --git a/docs/usage/configuration-options.md b/docs/usage/configuration-options.md index 1e86f6a1062a08067cbf6bec62609650cd1f07de..2f27ba582f733ccfa73f8cf4f449c02043bb87ca 100644 --- a/docs/usage/configuration-options.md +++ b/docs/usage/configuration-options.md @@ -1809,7 +1809,7 @@ This field also supports Regular Expressions if they begin and end with `/`. e.g { "packageRules": [ { - "matchBaseBranches": ["/^release\\/.*/"], + "matchBaseBranches": ["/^release/.*/"], "excludePackagePatterns": ["^eslint"], "enabled": false } @@ -2782,7 +2782,7 @@ regex definition: { "fileMatch": ["values.yaml$"], "matchStrings": [ - "image:\\s+(?<depName>my\\.old\\.registry\\/aRepository\\/andImage):(?<currentValue>[^\\s]+)" + "image:\\s+(?<depName>my\\.old\\.registry/aRepository/andImage):(?<currentValue>[^\\s]+)" ], "depNameTemplate": "my.new.registry/aRepository/andImage", "autoReplaceStringTemplate": "image: {{{depName}}}:{{{newValue}}}", diff --git a/lib/config/options/index.ts b/lib/config/options/index.ts index dc6b4c33395991aa7a8a80ba6ff473cbc4a1ec49..e062c7f02ee02a601163068cbfbcbda868d07083 100644 --- a/lib/config/options/index.ts +++ b/lib/config/options/index.ts @@ -962,7 +962,7 @@ const options: RenovateOptions[] = [ { name: 'matchBaseBranches', description: - 'List of strings containing exact matches (e.g. `["main"]`) and/or regex expressions (e.g. `["/^release\\/.*/"]`). Valid only within a `packageRules` object.', + 'List of strings containing exact matches (e.g. `["main"]`) and/or regex expressions (e.g. `["/^release/.*/"]`). Valid only within a `packageRules` object.', type: 'array', subType: 'string', allowString: true, diff --git a/lib/config/presets/internal/group.ts b/lib/config/presets/internal/group.ts index 18a9bf8d2f68f8855f01b87491a4b8cd0aec9714..4e4d71da789ad3e62f636126fdffe6ee6622469e 100644 --- a/lib/config/presets/internal/group.ts +++ b/lib/config/presets/internal/group.ts @@ -314,7 +314,7 @@ const staticGroups = { { groupName: 'PHPStan packages', matchDatasources: ['packagist'], - matchPackagePatterns: ['^phpstan\\/phpstan$', '\\/phpstan-'], + matchPackagePatterns: ['^phpstan/phpstan$', '/phpstan-'], }, ], }, diff --git a/lib/config/presets/internal/monorepo.ts b/lib/config/presets/internal/monorepo.ts index a471cdfbce0ce7c42fbe3a3875bfcae8beb8ba87..930bf6a3f73ee2f151cabbaf3e1f42eb17c68bc7 100644 --- a/lib/config/presets/internal/monorepo.ts +++ b/lib/config/presets/internal/monorepo.ts @@ -270,7 +270,7 @@ const patternGroups = { clarity: ['^@cds/', '^@clr/'], embroider: '^@embroider/', fullcalendar: '^@fullcalendar/', - spfx: ['^@microsoft\\/sp-', '^@microsoft\\/eslint-.+-spfx$'], + spfx: ['^@microsoft/sp-', '^@microsoft/eslint-.+-spfx$'], spock: '^org\\.spockframework:spock-', 'syncfusion-dotnet': '^Syncfusion\\.', wordpress: '^@wordpress/', diff --git a/lib/modules/datasource/deno/index.ts b/lib/modules/datasource/deno/index.ts index 1568c1d5cd82344818bcc95cd5b94d64da9ce9c6..81b42542b57e2d0cbf05362a829897d3d56e36ec 100644 --- a/lib/modules/datasource/deno/index.ts +++ b/lib/modules/datasource/deno/index.ts @@ -45,7 +45,7 @@ export class DenoDatasource extends Datasource { const massagedRegistryUrl = registryUrl!; const extractResult = regEx( - '^(https:\\/\\/deno.land\\/)(?<rawPackageName>[^@\\s]+)' + '^(https://deno.land/)(?<rawPackageName>[^@\\s]+)' ).exec(packageName); const rawPackageName = extractResult?.groups?.rawPackageName; if (is.nullOrUndefined(rawPackageName)) { diff --git a/lib/modules/datasource/go/releases-goproxy.ts b/lib/modules/datasource/go/releases-goproxy.ts index c3dd78d1608cbfed71bb7ac97122012d2a02a304..a541c06c2872b3e091cbe3d14fdd557c37e9a9dd 100644 --- a/lib/modules/datasource/go/releases-goproxy.ts +++ b/lib/modules/datasource/go/releases-goproxy.ts @@ -161,11 +161,11 @@ export class GoProxyDatasource extends Datasource { }, asterisk: { match: '*', - value: (_: string) => '[^\\/]*', + value: (_: string) => '[^/]*', }, qmark: { match: '?', - value: (_: string) => '[^\\/]', + value: (_: string) => '[^/]', }, characterRangeOpen: { match: '[', diff --git a/lib/modules/datasource/hermit/index.ts b/lib/modules/datasource/hermit/index.ts index f2015d3385674ba797b23947a323c308cd5a588a..cb95421f5fe3f7206c16d6f923a08adff25ab480 100644 --- a/lib/modules/datasource/hermit/index.ts +++ b/lib/modules/datasource/hermit/index.ts @@ -34,7 +34,7 @@ export class HermitDatasource extends Datasource { constructor() { super(HermitDatasource.id); this.http = new GithubHttp(id); - this.pathRegex = regEx('^\\/(?<owner>[^/]+)\\/(?<repo>[^/]+)$'); + this.pathRegex = regEx('^/(?<owner>[^/]+)/(?<repo>[^/]+)$'); } @cache({ diff --git a/lib/modules/datasource/maven/index.ts b/lib/modules/datasource/maven/index.ts index 19e327ec7dd36505519cfd12ee95b7334c98f759..a257edfcdeb5265dee274374f70f8e261f58f16e 100644 --- a/lib/modules/datasource/maven/index.ts +++ b/lib/modules/datasource/maven/index.ts @@ -53,7 +53,7 @@ function extractVersions(metadata: XmlDocument): string[] { } const mavenCentralHtmlVersionRegex = regEx( - '^<a href="(?<version>[^"]+)\\/" title="(?:[^"]+)\\/">(?:[^"]+)\\/<\\/a>\\s+(?<releaseTimestamp>\\d\\d\\d\\d-\\d\\d-\\d\\d \\d\\d:\\d\\d)\\s+-$', + '^<a href="(?<version>[^"]+)/" title="(?:[^"]+)/">(?:[^"]+)/</a>\\s+(?<releaseTimestamp>\\d\\d\\d\\d-\\d\\d-\\d\\d \\d\\d:\\d\\d)\\s+-$', 'i' ); diff --git a/lib/modules/datasource/pypi/common.ts b/lib/modules/datasource/pypi/common.ts index 50310011e54b8faa99ead54e626c5e26750ed332..ea46fddcc7530ff7ae7732ac93da5ab0ccd537ba 100644 --- a/lib/modules/datasource/pypi/common.ts +++ b/lib/modules/datasource/pypi/common.ts @@ -1,6 +1,6 @@ import { regEx } from '../../../util/regex'; -const githubRepoPattern = regEx(/^https?:\/\/github\.com\/[^\\/]+\/[^\\/]+$/); +const githubRepoPattern = regEx(/^https?:\/\/github\.com\/[^/]+\/[^/]+$/); export function isGitHubRepo(url: string): boolean { return !url.includes('sponsors') && githubRepoPattern.test(url); diff --git a/lib/modules/manager/bazelisk/index.ts b/lib/modules/manager/bazelisk/index.ts index 345989e1b4c99ad6ff567a52539657670301dc2c..350125b3b3a06c7ab8ee6e88a33e1e0c34058ed7 100644 --- a/lib/modules/manager/bazelisk/index.ts +++ b/lib/modules/manager/bazelisk/index.ts @@ -3,7 +3,7 @@ import { GithubReleasesDatasource } from '../../datasource/github-releases'; export { extractPackageFile } from './extract'; export const defaultConfig = { - fileMatch: ['(^|\\/)\\.bazelversion$'], + fileMatch: ['(^|/)\\.bazelversion$'], pinDigests: false, }; diff --git a/lib/modules/manager/cocoapods/extract.ts b/lib/modules/manager/cocoapods/extract.ts index e251df745da8ab9ddf96deb109a919312c695abb..ddb17826e7541322b36f6ca40b28f57a63758991 100644 --- a/lib/modules/manager/cocoapods/extract.ts +++ b/lib/modules/manager/cocoapods/extract.ts @@ -9,7 +9,7 @@ import type { PackageDependency, PackageFileContent } from '../types'; import type { ParsedLine } from './types'; const regexMappings = [ - regEx(`^\\s*pod\\s+(['"])(?<spec>[^'"/]+)(\\/(?<subspec>[^'"]+))?(['"])`), + regEx(`^\\s*pod\\s+(['"])(?<spec>[^'"/]+)(/(?<subspec>[^'"]+))?(['"])`), regEx( `^\\s*pod\\s+(['"])[^'"]+(['"])\\s*,\\s*(['"])(?<currentValue>[^'"]+)(['"])\\s*$` ), diff --git a/lib/modules/manager/flux/common.ts b/lib/modules/manager/flux/common.ts index 320e7b9f31b92b3978f56b10fc94c00cd82847aa..3d9b97896f1128dd189be9a99c79209cd2999422 100644 --- a/lib/modules/manager/flux/common.ts +++ b/lib/modules/manager/flux/common.ts @@ -1,7 +1,7 @@ import { regEx } from '../../../util/regex'; export const systemManifestRegex = - '(^|\\/)flux-system\\/(?:.+\\/)?gotk-components\\.yaml$'; + '(^|/)flux-system/(?:.+/)?gotk-components\\.yaml$'; export function isSystemManifest(file: string): boolean { return regEx(systemManifestRegex).test(file); diff --git a/lib/modules/manager/fvm/index.ts b/lib/modules/manager/fvm/index.ts index 68b30f31387696f8cb17aa76db233dbeb525b05f..ebb67637e31e32f66c8e708538f9d50cdcb727d5 100644 --- a/lib/modules/manager/fvm/index.ts +++ b/lib/modules/manager/fvm/index.ts @@ -6,6 +6,6 @@ export { extractPackageFile } from './extract'; export const supportedDatasources = [FlutterVersionDatasource.id]; export const defaultConfig = { - fileMatch: ['(^|\\/)\\.fvm\\/fvm_config\\.json$'], + fileMatch: ['(^|/)\\.fvm/fvm_config\\.json$'], versioning: semverVersioning.id, }; diff --git a/lib/modules/manager/github-actions/index.ts b/lib/modules/manager/github-actions/index.ts index 8d6dc9282c5561c252375404e4b5531607b51f50..c2d7ad80bb6e42ae273f1f66b84c5dc359de37ac 100644 --- a/lib/modules/manager/github-actions/index.ts +++ b/lib/modules/manager/github-actions/index.ts @@ -4,8 +4,8 @@ export { extractPackageFile } from './extract'; export const defaultConfig = { fileMatch: [ - '^(workflow-templates|\\.github\\/workflows)\\/[^/]+\\.ya?ml$', - '(^|\\/)action\\.ya?ml$', + '^(workflow-templates|\\.github/workflows)/[^/]+\\.ya?ml$', + '(^|/)action\\.ya?ml$', ], }; diff --git a/lib/modules/manager/gitlabci/utils.ts b/lib/modules/manager/gitlabci/utils.ts index d8afde40bae3663711b653b2591f50910e728769..15f094742b12826160784d9e680b72393364b5eb 100644 --- a/lib/modules/manager/gitlabci/utils.ts +++ b/lib/modules/manager/gitlabci/utils.ts @@ -16,7 +16,7 @@ export function replaceReferenceTags(content: string): string { } const depProxyRe = regEx( - `(?<prefix>\\$\\{?CI_DEPENDENCY_PROXY_(?:DIRECT_)?GROUP_IMAGE_PREFIX\\}?\\/)(?<depName>.+)` + `(?<prefix>\\$\\{?CI_DEPENDENCY_PROXY_(?:DIRECT_)?GROUP_IMAGE_PREFIX\\}?/)(?<depName>.+)` ); /** diff --git a/lib/modules/manager/gradle/index.ts b/lib/modules/manager/gradle/index.ts index bb0ce8edd10c745369408ba0d30d297b5faba463..ad83ff7f60ba5d6f5227c8ab21c1033b6711ec0b 100644 --- a/lib/modules/manager/gradle/index.ts +++ b/lib/modules/manager/gradle/index.ts @@ -12,12 +12,12 @@ export const supportsLockFileMaintenance = true; export const defaultConfig = { fileMatch: [ '\\.gradle(\\.kts)?$', - '(^|\\/)gradle\\.properties$', - '(^|\\/)gradle\\/.+\\.toml$', + '(^|/)gradle\\.properties$', + '(^|/)gradle/.+\\.toml$', '\\.versions\\.toml$', // The two below is for gradle-consistent-versions plugin - `(^|\\/)versions.props$`, - `(^|\\/)versions.lock$`, + `(^|/)versions.props$`, + `(^|/)versions.lock$`, ], timeout: 600, versioning: gradleVersioning.id, diff --git a/lib/modules/manager/mint/index.ts b/lib/modules/manager/mint/index.ts index 34ac5845807e3091f7ad883392b3159d84466ea5..fffd5aadb1ddf5f23b96a901a0ff3393e45a8b7d 100644 --- a/lib/modules/manager/mint/index.ts +++ b/lib/modules/manager/mint/index.ts @@ -8,5 +8,5 @@ export { extractPackageFile } from './extract'; export const supportedDatasources = [GitTagsDatasource.id]; export const defaultConfig = { - fileMatch: ['(^|\\/)Mintfile$'], + fileMatch: ['(^|/)Mintfile$'], }; diff --git a/lib/modules/manager/nix/index.ts b/lib/modules/manager/nix/index.ts index 58b43af4843689db3a2c850b452aaf03644f789b..7cdfa48cdeb1bd5150b226d267790303e5f75eee 100644 --- a/lib/modules/manager/nix/index.ts +++ b/lib/modules/manager/nix/index.ts @@ -6,7 +6,7 @@ export { updateArtifacts } from './artifacts'; export const supportsLockFileMaintenance = true; export const defaultConfig = { - fileMatch: ['(^|\\/)flake\\.nix$'], + fileMatch: ['(^|/)flake\\.nix$'], commitMessageTopic: 'nixpkgs', commitMessageExtra: 'to {{newValue}}', enabled: false, diff --git a/lib/modules/manager/nuget/index.ts b/lib/modules/manager/nuget/index.ts index 8f2a3253eb924f5398c95da9f3dff0441566d703..c34ca3a67d8e781eb4a39a775759b1a9423d2d68 100644 --- a/lib/modules/manager/nuget/index.ts +++ b/lib/modules/manager/nuget/index.ts @@ -12,8 +12,8 @@ export const defaultConfig = { fileMatch: [ '\\.(?:cs|fs|vb)proj$', '\\.(?:props|targets)$', - '(^|\\/)dotnet-tools\\.json$', - '(^|\\/)global\\.json$', + '(^|/)dotnet-tools\\.json$', + '(^|/)global\\.json$', ], }; diff --git a/lib/modules/manager/pre-commit/extract.ts b/lib/modules/manager/pre-commit/extract.ts index f7450cf713e9a86ad2125924d59a6c8600883e77..7c9fba7561835f3e7bee1d8cdc71bf27ecd848cd 100644 --- a/lib/modules/manager/pre-commit/extract.ts +++ b/lib/modules/manager/pre-commit/extract.ts @@ -83,7 +83,7 @@ function extractDependency( const urlMatchers = [ // This splits "http://my.github.com/user/repo" -> "my.github.com" "user/repo - regEx('^https?:\\/\\/(?<hostname>[^\\/]+)\\/(?<depName>\\S*)'), + regEx('^https?://(?<hostname>[^/]+)/(?<depName>\\S*)'), // This splits "git@private.registry.com:user/repo" -> "private.registry.com" "user/repo regEx('^git@(?<hostname>[^:]+):(?<depName>\\S*)'), // This split "git://github.com/pre-commit/pre-commit-hooks" -> "github.com" "pre-commit/pre-commit-hooks" diff --git a/lib/modules/manager/puppet/index.ts b/lib/modules/manager/puppet/index.ts index 8743d2d408cfde71703f51347c8250d98351cacd..2b0735bb4c4c936e8de814979d5582d4213f012e 100644 --- a/lib/modules/manager/puppet/index.ts +++ b/lib/modules/manager/puppet/index.ts @@ -8,7 +8,7 @@ export { extractPackageFile } from './extract'; export const language: ProgrammingLanguage = 'ruby'; export const defaultConfig = { - fileMatch: ['(^|\\/)Puppetfile$'], + fileMatch: ['(^|/)Puppetfile$'], }; export const supportedDatasources = [ diff --git a/lib/modules/manager/regex/readme.md b/lib/modules/manager/regex/readme.md index a4a0ab618557b4278e5f609d1c53dd9f7ce7db33..3adba3802f81bc11b23f42cc0ff6049cc0b91183 100644 --- a/lib/modules/manager/regex/readme.md +++ b/lib/modules/manager/regex/readme.md @@ -180,8 +180,8 @@ For example: "fileMatch": [".*y[a]?ml$"], "matchStringsStrategy": "combination", "matchStrings": [ - "['\"]?(?<depName>/pipeline-fragments\\/fragment-version-check)['\"]?\\s*ref:\\s['\"]?(?<currentValue>[\\d-]*)['\"]?", - "['\"]?(?<depName>pipeline-solutions\\/gitlab\\/fragments\\/fragment-version-check)['\"]?\\s*ref:\\s['\"]?(?<currentValue>[\\d-]*)['\"]?" + "['\"]?(?<depName>/pipeline-fragments/fragment-version-check)['\"]?\\s*ref:\\s['\"]?(?<currentValue>[\\d-]*)['\"]?", + "['\"]?(?<depName>pipeline-solutions/gitlab/fragments/fragment-version-check)['\"]?\\s*ref:\\s['\"]?(?<currentValue>[\\d-]*)['\"]?" ], "depNameTemplate": "pipeline-solutions/gitlab/fragments/fragment-version-check", "autoReplaceStringTemplate": "'{{{depName}}}'\n ref: {{{newValue}}}", diff --git a/lib/modules/manager/terraform/lockfile/hash.ts b/lib/modules/manager/terraform/lockfile/hash.ts index d3b37571630a2dc862c31127e306c185c555b6a4..25afff41e2abefda2a38c9c3e89f8827e34ebbbf 100644 --- a/lib/modules/manager/terraform/lockfile/hash.ts +++ b/lib/modules/manager/terraform/lockfile/hash.ts @@ -32,7 +32,7 @@ export class TerraformProviderHash { // add double space, the filename and a new line char rootHash.update(' '); - const fileName = file.replace(regEx(/^.*[\\/]/), ''); + const fileName = file.replace(regEx(/^.*[/]/), ''); rootHash.update(fileName); rootHash.update('\n'); } diff --git a/lib/modules/manager/terraform/lockfile/util.ts b/lib/modules/manager/terraform/lockfile/util.ts index 774be9e728491433b9c1819dd6e1367c12a6b907..2f59bb1e566722e7d220c4c97d7ad2bc4e722d53 100644 --- a/lib/modules/manager/terraform/lockfile/util.ts +++ b/lib/modules/manager/terraform/lockfile/util.ts @@ -10,7 +10,7 @@ import type { } from './types'; const providerStartLineRegex = regEx( - `^provider "(?<registryUrl>[^/]*)\\/(?<namespace>[^/]*)\\/(?<depName>[^/]*)"` + `^provider "(?<registryUrl>[^/]*)/(?<namespace>[^/]*)/(?<depName>[^/]*)"` ); const versionLineRegex = regEx( `^(?<prefix>[\\s]*version[\\s]*=[\\s]*")(?<version>[^"']+)(?<suffix>".*)$` diff --git a/lib/modules/manager/woodpecker/index.ts b/lib/modules/manager/woodpecker/index.ts index aa823a82e0621e431cf05f2c157b929d7eb2903c..07a0c38a5c77029febe78554f2b9ef1a3e0de287 100644 --- a/lib/modules/manager/woodpecker/index.ts +++ b/lib/modules/manager/woodpecker/index.ts @@ -7,7 +7,7 @@ export const language: ProgrammingLanguage = 'docker'; export { extractPackageFile }; export const defaultConfig = { - fileMatch: ['^\\.woodpecker(?:\\/[^/]+)?\\.ya?ml$'], + fileMatch: ['^\\.woodpecker(?:/[^/]+)?\\.ya?ml$'], }; export const supportedDatasources = [DockerDatasource.id]; diff --git a/lib/modules/versioning/kubernetes-api/index.ts b/lib/modules/versioning/kubernetes-api/index.ts index c620991813d0fb5841fd20ba083a20d5550ea569..afcdf95438da3b59aaaf860c28a6fcbbd1dfa80c 100644 --- a/lib/modules/versioning/kubernetes-api/index.ts +++ b/lib/modules/versioning/kubernetes-api/index.ts @@ -10,7 +10,7 @@ export const supportsRanges = false; export class KubernetesApiVersioningApi extends RegExpVersioningApi { private static readonly versionRegex = - '^(?:(?<compatibility>\\S+)\\/)?v(?<major>\\d+)(?<prerelease>(?:alpha|beta)\\d+)?$'; + '^(?:(?<compatibility>\\S+)/)?v(?<major>\\d+)(?<prerelease>(?:alpha|beta)\\d+)?$'; public constructor() { super(KubernetesApiVersioningApi.versionRegex); diff --git a/lib/util/modules.ts b/lib/util/modules.ts index e0bc3596cc0bf4b78ac17f9f74cc2ad7d276ec18..f0c6d4991335b35457fdadf4ccd679ee8245ee47 100644 --- a/lib/util/modules.ts +++ b/lib/util/modules.ts @@ -1,10 +1,9 @@ import fs from 'fs'; import upath from 'upath'; -import { regEx } from './regex'; function relatePath(here: string, there: string): string { - const thereParts = upath.normalizeTrim(there).split(regEx(/[\\/]/)); - const hereParts = upath.normalizeTrim(here).split(regEx(/[\\/]/)); + const thereParts = upath.normalizeTrim(there).split('/'); + const hereParts = upath.normalizeTrim(here).split('/'); let idx = 0; while ( diff --git a/lib/workers/repository/update/pr/changelog/release-notes.ts b/lib/workers/repository/update/pr/changelog/release-notes.ts index 31446797c7c0f7867b67e2f49ff1a8228ca93d33..2cb7d2fbae582f5c09bc98ead90c34e142261315 100644 --- a/lib/workers/repository/update/pr/changelog/release-notes.ts +++ b/lib/workers/repository/update/pr/changelog/release-notes.ts @@ -82,7 +82,7 @@ export function massageBody( body = body.replace(regEx(/^<a name="[^"]*"><\/a>\n/), ''); body = body.replace( regEx( - `^##? \\[[^\\]]*\\]\\(${baseUrl}[^/]*\\/[^/]*\\/compare\\/.*?\\n`, + `^##? \\[[^\\]]*\\]\\(${baseUrl}[^/]*/[^/]*/compare/.*?\\n`, undefined, false ), @@ -90,7 +90,7 @@ export function massageBody( ); // Clean-up unnecessary commits link body = `\n${body}\n`.replace( - regEx(`\\n${baseUrl}[^/]+\\/[^/]+\\/compare\\/[^\\n]+(\\n|$)`), + regEx(`\\n${baseUrl}[^/]+/[^/]+/compare/[^\\n]+(\\n|$)`), '\n' ); // Reduce headings size