From 1d92836c84fb1e44030768717f2b367055207d36 Mon Sep 17 00:00:00 2001
From: Atsushi Watanabe <atsushi.w@ieee.org>
Date: Tue, 15 Jun 2021 20:10:23 +0900
Subject: [PATCH] fix: regex manager extractVersionTemplate validation (#10325)

---
 docs/usage/configuration-options.md | 5 +++++
 lib/config/definitions.ts           | 9 +++++++++
 lib/config/validation.spec.ts       | 1 +
 lib/config/validation.ts            | 1 +
 4 files changed, 16 insertions(+)

diff --git a/docs/usage/configuration-options.md b/docs/usage/configuration-options.md
index 06988ec4c8..e6b372a013 100644
--- a/docs/usage/configuration-options.md
+++ b/docs/usage/configuration-options.md
@@ -1990,6 +1990,11 @@ In the above example, each regex manager will match a single dependency each.
 If `depName` cannot be captured with a named capture group in `matchString` then it can be defined manually using this field.
 It will be compiled using Handlebars and the regex `groups` result.
 
+### extractVersionTemplate
+
+If `extractVersion` cannot be captured with a named capture group in `matchString` then it can be defined manually using this field.
+It will be compiled using Handlebars and the regex `groups` result.
+
 ### lookupNameTemplate
 
 `lookupName` is used for looking up dependency versions.
diff --git a/lib/config/definitions.ts b/lib/config/definitions.ts
index e76131de8a..11cfde45e6 100644
--- a/lib/config/definitions.ts
+++ b/lib/config/definitions.ts
@@ -1956,6 +1956,15 @@ const options: RenovateOptions[] = [
     cli: false,
     env: false,
   },
+  {
+    name: 'extractVersionTemplate',
+    description:
+      'Optional extractVersion for extracted dependencies. Valid only within a `regexManagers` object.',
+    type: 'string',
+    parent: 'regexManagers',
+    cli: false,
+    env: false,
+  },
   {
     name: 'fetchReleaseNotes',
     description: 'Allow to disable release notes fetching.',
diff --git a/lib/config/validation.spec.ts b/lib/config/validation.spec.ts
index eb7eb914b4..886fe77838 100644
--- a/lib/config/validation.spec.ts
+++ b/lib/config/validation.spec.ts
@@ -352,6 +352,7 @@ describe(getName(), () => {
             depNameTemplate: 'foo',
             datasourceTemplate: 'bar',
             registryUrlTemplate: 'foobar',
+            extractVersionTemplate: '^(?<version>v\\d+\\.\\d+)',
           },
         ],
       };
diff --git a/lib/config/validation.ts b/lib/config/validation.ts
index b331e7c29c..2cf5b2adc4 100644
--- a/lib/config/validation.ts
+++ b/lib/config/validation.ts
@@ -388,6 +388,7 @@ export async function validateConfig(
                 'versioningTemplate',
                 'registryUrlTemplate',
                 'currentValueTemplate',
+                'extractVersionTemplate',
               ];
               // TODO: fix types
               for (const regexManager of val as any[]) {
-- 
GitLab