From 09402a32e6df8e35ae9f5a8f0f3bb09330df15c5 Mon Sep 17 00:00:00 2001
From: RahulGautamSingh <rahultesnik@gmail.com>
Date: Mon, 13 Feb 2023 13:24:20 +0530
Subject: [PATCH] fix(datasource): rename `adoptium-java` to `java-version`
 (#20245)

---
 .../custom/datasource-migration.spec.ts           | 13 ++++++++++++-
 .../migrations/custom/datasource-migration.ts     | 10 +++++++++-
 .../custom/match-datasources-migration.spec.ts    |  4 ++--
 .../custom/match-datasources-migration.ts         | 15 ++++++++++-----
 lib/config/migrations/migrations-service.ts       |  1 +
 lib/config/presets/internal/workarounds.ts        |  2 +-
 lib/modules/datasource/api.ts                     |  4 ++--
 .../__fixtures__/jre.json                         |  0
 .../__fixtures__/page.json                        |  0
 .../__snapshots__/index.spec.ts.snap              |  6 +++---
 .../{adoptium-java => java-version}/common.ts     |  2 +-
 .../{adoptium-java => java-version}/index.spec.ts |  2 +-
 .../{adoptium-java => java-version}/index.ts      |  8 +++-----
 .../{adoptium-java => java-version}/readme.md     |  0
 .../{adoptium-java => java-version}/types.ts      |  0
 lib/modules/datasource/readme.md                  |  2 +-
 lib/modules/manager/asdf/extract.spec.ts          |  6 +++---
 lib/modules/manager/asdf/index.ts                 |  4 ++--
 lib/modules/manager/asdf/upgradeable-tooling.ts   |  6 +++---
 lib/util/exec/containerbase.ts                    |  2 +-
 20 files changed, 55 insertions(+), 32 deletions(-)
 rename lib/modules/datasource/{adoptium-java => java-version}/__fixtures__/jre.json (100%)
 rename lib/modules/datasource/{adoptium-java => java-version}/__fixtures__/page.json (100%)
 rename lib/modules/datasource/{adoptium-java => java-version}/__snapshots__/index.spec.ts.snap (90%)
 rename lib/modules/datasource/{adoptium-java => java-version}/common.ts (86%)
 rename lib/modules/datasource/{adoptium-java => java-version}/index.spec.ts (98%)
 rename lib/modules/datasource/{adoptium-java => java-version}/index.ts (85%)
 rename lib/modules/datasource/{adoptium-java => java-version}/readme.md (100%)
 rename lib/modules/datasource/{adoptium-java => java-version}/types.ts (100%)

diff --git a/lib/config/migrations/custom/datasource-migration.spec.ts b/lib/config/migrations/custom/datasource-migration.spec.ts
index 08d768de89..10eda1e06a 100644
--- a/lib/config/migrations/custom/datasource-migration.spec.ts
+++ b/lib/config/migrations/custom/datasource-migration.spec.ts
@@ -1,7 +1,18 @@
 import { DatasourceMigration } from './datasource-migration';
 
 describe('config/migrations/custom/datasource-migration', () => {
-  it('should migrate properly', () => {
+  it('should migrate adoptium-java', () => {
+    expect(DatasourceMigration).toMigrate(
+      {
+        datasource: 'adoptium-java',
+      },
+      {
+        datasource: 'java-version',
+      }
+    );
+  });
+
+  it('should migrate donet', () => {
     expect(DatasourceMigration).toMigrate(
       {
         datasource: 'dotnet',
diff --git a/lib/config/migrations/custom/datasource-migration.ts b/lib/config/migrations/custom/datasource-migration.ts
index 2f74293056..b20445935a 100644
--- a/lib/config/migrations/custom/datasource-migration.ts
+++ b/lib/config/migrations/custom/datasource-migration.ts
@@ -6,7 +6,15 @@ export class DatasourceMigration extends AbstractMigration {
 
   override run(value: unknown): void {
     if (is.string(value)) {
-      const newValue = value === 'dotnet' ? 'dotnet-version' : value;
+      let newValue = value;
+      switch (newValue) {
+        case 'adoptium-java':
+          newValue = 'java-version';
+          break;
+        case 'dotnet':
+          newValue = 'dotnet-version';
+          break;
+      }
 
       this.rewrite(newValue);
     }
diff --git a/lib/config/migrations/custom/match-datasources-migration.spec.ts b/lib/config/migrations/custom/match-datasources-migration.spec.ts
index 9c8187380e..1a8c8ac579 100644
--- a/lib/config/migrations/custom/match-datasources-migration.spec.ts
+++ b/lib/config/migrations/custom/match-datasources-migration.spec.ts
@@ -4,10 +4,10 @@ describe('config/migrations/custom/match-datasources-migration', () => {
   it('should migrate properly', () => {
     expect(MatchDatasourcesMigration).toMigrate(
       {
-        matchDatasources: ['dotnet'],
+        matchDatasources: ['adoptium-java', 'dotnet', 'npm'],
       },
       {
-        matchDatasources: ['dotnet-version'],
+        matchDatasources: ['java-version', 'dotnet-version', 'npm'],
       }
     );
   });
diff --git a/lib/config/migrations/custom/match-datasources-migration.ts b/lib/config/migrations/custom/match-datasources-migration.ts
index af9a043839..5d87e57d45 100644
--- a/lib/config/migrations/custom/match-datasources-migration.ts
+++ b/lib/config/migrations/custom/match-datasources-migration.ts
@@ -6,11 +6,16 @@ export class MatchDatasourcesMigration extends AbstractMigration {
 
   override run(value: unknown): void {
     if (Array.isArray(value)) {
-      const newValue = value
-        .filter(is.nonEmptyString)
-        .map((datasource) =>
-          datasource === 'dotnet' ? 'dotnet-version' : datasource
-        );
+      const newValue = value.filter(is.nonEmptyString).map((datasource) => {
+        switch (datasource) {
+          case 'adoptium-java':
+            return 'java-version';
+          case 'dotnet':
+            return 'dotnet-version';
+          default:
+            return datasource;
+        }
+      });
 
       this.rewrite(newValue);
     }
diff --git a/lib/config/migrations/migrations-service.ts b/lib/config/migrations/migrations-service.ts
index ca09438bd3..fc23f576e3 100644
--- a/lib/config/migrations/migrations-service.ts
+++ b/lib/config/migrations/migrations-service.ts
@@ -73,6 +73,7 @@ export class MigrationsService {
   ]);
 
   static readonly renamedProperties: ReadonlyMap<string, string> = new Map([
+    ['adoptium-java', 'java-version'],
     ['endpoints', 'hostRules'],
     ['excludedPackageNames', 'excludePackageNames'],
     ['exposeEnv', 'exposeAllEnv'],
diff --git a/lib/config/presets/internal/workarounds.ts b/lib/config/presets/internal/workarounds.ts
index 3223d41c76..03d13ce0da 100644
--- a/lib/config/presets/internal/workarounds.ts
+++ b/lib/config/presets/internal/workarounds.ts
@@ -82,7 +82,7 @@ export const presets: Record<string, Preset> = {
         allowedVersions: '/^(?:8|11|17)(?:\\.|-|$)/',
         description:
           'Limit Java runtime versions to LTS releases. To receive all major releases add `workarounds:javaLTSVersions` to the `ignorePresets` array.',
-        matchDatasources: ['docker', 'adoptium-java'],
+        matchDatasources: ['docker', 'java-version'],
         matchPackageNames: [
           'eclipse-temurin',
           'amazoncorretto',
diff --git a/lib/modules/datasource/api.ts b/lib/modules/datasource/api.ts
index 915f18e6b9..c61d696bfa 100644
--- a/lib/modules/datasource/api.ts
+++ b/lib/modules/datasource/api.ts
@@ -1,4 +1,3 @@
-import { AdoptiumJavaDatasource } from './adoptium-java';
 import { ArtifactoryDatasource } from './artifactory';
 import { AwsMachineImageDataSource } from './aws-machine-image';
 import { AwsRdsDataSource } from './aws-rds';
@@ -32,6 +31,7 @@ import { HelmDatasource } from './helm';
 import { HermitDatasource } from './hermit';
 import { HexDatasource } from './hex';
 import { HexpmBobDatasource } from './hexpm-bob';
+import { JavaVersionDatasource } from './java-version';
 import { JenkinsPluginsDatasource } from './jenkins-plugins';
 import { KubernetesApiDatasource } from './kubernetes-api';
 import { MavenDatasource } from './maven';
@@ -55,7 +55,6 @@ import type { DatasourceApi } from './types';
 const api = new Map<string, DatasourceApi>();
 export default api;
 
-api.set(AdoptiumJavaDatasource.id, new AdoptiumJavaDatasource());
 api.set(ArtifactoryDatasource.id, new ArtifactoryDatasource());
 api.set(AwsMachineImageDataSource.id, new AwsMachineImageDataSource());
 api.set(AwsRdsDataSource.id, new AwsRdsDataSource());
@@ -89,6 +88,7 @@ api.set(HelmDatasource.id, new HelmDatasource());
 api.set(HermitDatasource.id, new HermitDatasource());
 api.set(HexDatasource.id, new HexDatasource());
 api.set(HexpmBobDatasource.id, new HexpmBobDatasource());
+api.set(JavaVersionDatasource.id, new JavaVersionDatasource());
 api.set(JenkinsPluginsDatasource.id, new JenkinsPluginsDatasource());
 api.set(KubernetesApiDatasource.id, new KubernetesApiDatasource());
 api.set(MavenDatasource.id, new MavenDatasource());
diff --git a/lib/modules/datasource/adoptium-java/__fixtures__/jre.json b/lib/modules/datasource/java-version/__fixtures__/jre.json
similarity index 100%
rename from lib/modules/datasource/adoptium-java/__fixtures__/jre.json
rename to lib/modules/datasource/java-version/__fixtures__/jre.json
diff --git a/lib/modules/datasource/adoptium-java/__fixtures__/page.json b/lib/modules/datasource/java-version/__fixtures__/page.json
similarity index 100%
rename from lib/modules/datasource/adoptium-java/__fixtures__/page.json
rename to lib/modules/datasource/java-version/__fixtures__/page.json
diff --git a/lib/modules/datasource/adoptium-java/__snapshots__/index.spec.ts.snap b/lib/modules/datasource/java-version/__snapshots__/index.spec.ts.snap
similarity index 90%
rename from lib/modules/datasource/adoptium-java/__snapshots__/index.spec.ts.snap
rename to lib/modules/datasource/java-version/__snapshots__/index.spec.ts.snap
index d04abec922..77d3898dab 100644
--- a/lib/modules/datasource/adoptium-java/__snapshots__/index.spec.ts.snap
+++ b/lib/modules/datasource/java-version/__snapshots__/index.spec.ts.snap
@@ -1,6 +1,6 @@
 // Jest Snapshot v1, https://goo.gl/fbAQLP
 
-exports[`modules/datasource/adoptium-java/index getReleases pages 1`] = `
+exports[`modules/datasource/java-version/index getReleases pages 1`] = `
 {
   "homepage": "https://adoptium.net",
   "registryUrl": "https://api.adoptium.net/",
@@ -159,7 +159,7 @@ exports[`modules/datasource/adoptium-java/index getReleases pages 1`] = `
 }
 `;
 
-exports[`modules/datasource/adoptium-java/index getReleases processes real data (jre) 1`] = `
+exports[`modules/datasource/java-version/index getReleases processes real data (jre) 1`] = `
 {
   "homepage": "https://adoptium.net",
   "registryUrl": "https://api.adoptium.net/",
@@ -174,7 +174,7 @@ exports[`modules/datasource/adoptium-java/index getReleases processes real data
 }
 `;
 
-exports[`modules/datasource/adoptium-java/index getReleases processes real data 1`] = `
+exports[`modules/datasource/java-version/index getReleases processes real data 1`] = `
 {
   "homepage": "https://adoptium.net",
   "registryUrl": "https://api.adoptium.net/",
diff --git a/lib/modules/datasource/adoptium-java/common.ts b/lib/modules/datasource/java-version/common.ts
similarity index 86%
rename from lib/modules/datasource/adoptium-java/common.ts
rename to lib/modules/datasource/java-version/common.ts
index d65c51704f..1da35d036b 100644
--- a/lib/modules/datasource/adoptium-java/common.ts
+++ b/lib/modules/datasource/java-version/common.ts
@@ -3,7 +3,7 @@ export const pageSize = 50;
 
 export const defaultRegistryUrl = 'https://api.adoptium.net/';
 
-export const datasource = 'adoptium-java';
+export const datasource = 'java-version';
 
 export function getImageType(packageName: string): string {
   switch (packageName) {
diff --git a/lib/modules/datasource/adoptium-java/index.spec.ts b/lib/modules/datasource/java-version/index.spec.ts
similarity index 98%
rename from lib/modules/datasource/adoptium-java/index.spec.ts
rename to lib/modules/datasource/java-version/index.spec.ts
index ee00651bd8..d660e43a8f 100644
--- a/lib/modules/datasource/adoptium-java/index.spec.ts
+++ b/lib/modules/datasource/java-version/index.spec.ts
@@ -11,7 +11,7 @@ function getPath(page: number, imageType = 'jdk'): string {
 
 const depName = 'java';
 
-describe('modules/datasource/adoptium-java/index', () => {
+describe('modules/datasource/java-version/index', () => {
   describe('getReleases', () => {
     it('throws for error', async () => {
       httpMock
diff --git a/lib/modules/datasource/adoptium-java/index.ts b/lib/modules/datasource/java-version/index.ts
similarity index 85%
rename from lib/modules/datasource/adoptium-java/index.ts
rename to lib/modules/datasource/java-version/index.ts
index 4e532ab704..9dda77f541 100644
--- a/lib/modules/datasource/adoptium-java/index.ts
+++ b/lib/modules/datasource/java-version/index.ts
@@ -12,7 +12,7 @@ import {
 } from './common';
 import type { AdoptiumJavaResponse } from './types';
 
-export class AdoptiumJavaDatasource extends Datasource {
+export class JavaVersionDatasource extends Datasource {
   static readonly id = datasource;
 
   constructor() {
@@ -55,8 +55,7 @@ export class AdoptiumJavaDatasource extends Datasource {
     namespace: `datasource-${datasource}`,
     key: ({ registryUrl, packageName }: GetReleasesConfig) =>
       // TODO: types (#7154)
-      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
-      `${registryUrl}:${getImageType(packageName)}`,
+      `${registryUrl!}:${getImageType(packageName)}`,
   })
   async getReleases({
     registryUrl,
@@ -68,8 +67,7 @@ export class AdoptiumJavaDatasource extends Datasource {
       'fetching java release'
     );
     // TODO: types (#7154)
-    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
-    const url = `${registryUrl}v3/info/release_versions?page_size=${pageSize}&image_type=${imageType}&project=jdk&release_type=ga&sort_method=DATE&sort_order=DESC`;
+    const url = `${registryUrl!}v3/info/release_versions?page_size=${pageSize}&image_type=${imageType}&project=jdk&release_type=ga&sort_method=DATE&sort_order=DESC`;
 
     const result: ReleaseResult = {
       homepage: 'https://adoptium.net',
diff --git a/lib/modules/datasource/adoptium-java/readme.md b/lib/modules/datasource/java-version/readme.md
similarity index 100%
rename from lib/modules/datasource/adoptium-java/readme.md
rename to lib/modules/datasource/java-version/readme.md
diff --git a/lib/modules/datasource/adoptium-java/types.ts b/lib/modules/datasource/java-version/types.ts
similarity index 100%
rename from lib/modules/datasource/adoptium-java/types.ts
rename to lib/modules/datasource/java-version/types.ts
diff --git a/lib/modules/datasource/readme.md b/lib/modules/datasource/readme.md
index bb797f9e4d..ab2db82cb2 100644
--- a/lib/modules/datasource/readme.md
+++ b/lib/modules/datasource/readme.md
@@ -5,7 +5,7 @@ Datasources are used in Renovate primarily to fetch released versions of package
 ## Follow the class-based programming style
 
 New datasources _must_ follow the class-based programming style.
-Use the `adoptium-java` datasource as a reference.
+Use the `java-version` datasource as a reference.
 
 Add the datasource to the API in [`api.ts`](api.ts) so that the new datasource is usable. If you find `Pending mocks!` errors in the Jest tests and your mocked URLs are correct, ensure the datasource is correctly registered.
 
diff --git a/lib/modules/manager/asdf/extract.spec.ts b/lib/modules/manager/asdf/extract.spec.ts
index 7c0771678e..4db8ccc25a 100644
--- a/lib/modules/manager/asdf/extract.spec.ts
+++ b/lib/modules/manager/asdf/extract.spec.ts
@@ -225,7 +225,7 @@ dummy 1.2.3
           },
           {
             currentValue: '16.0.0+36',
-            datasource: 'adoptium-java',
+            datasource: 'java-version',
             packageName: 'java-jdk',
             depName: 'java',
           },
@@ -369,7 +369,7 @@ dummy 1.2.3
         deps: [
           {
             currentValue: '16.0.0+36',
-            datasource: 'adoptium-java',
+            datasource: 'java-version',
             depName: 'java',
             packageName: 'java-jdk',
           },
@@ -380,7 +380,7 @@ dummy 1.2.3
         deps: [
           {
             currentValue: '16.0.0+36',
-            datasource: 'adoptium-java',
+            datasource: 'java-version',
             depName: 'java',
             packageName: 'java-jre',
           },
diff --git a/lib/modules/manager/asdf/index.ts b/lib/modules/manager/asdf/index.ts
index feaa1b6ee5..b8e647affd 100644
--- a/lib/modules/manager/asdf/index.ts
+++ b/lib/modules/manager/asdf/index.ts
@@ -1,8 +1,8 @@
-import { AdoptiumJavaDatasource } from '../../datasource/adoptium-java';
 import { DockerDatasource } from '../../datasource/docker';
 import { GithubReleasesDatasource } from '../../datasource/github-releases';
 import { GithubTagsDatasource } from '../../datasource/github-tags';
 import { HexpmBobDatasource } from '../../datasource/hexpm-bob';
+import { JavaVersionDatasource } from '../../datasource/java-version';
 import { NodeDatasource } from '../../datasource/node';
 import { RubyVersionDatasource } from '../../datasource/ruby-version';
 
@@ -15,7 +15,7 @@ export const defaultConfig = {
 };
 
 export const supportedDatasources = [
-  AdoptiumJavaDatasource.id,
+  JavaVersionDatasource.id,
   DockerDatasource.id,
   GithubReleasesDatasource.id,
   GithubTagsDatasource.id,
diff --git a/lib/modules/manager/asdf/upgradeable-tooling.ts b/lib/modules/manager/asdf/upgradeable-tooling.ts
index 62bad259df..3d85626c9f 100644
--- a/lib/modules/manager/asdf/upgradeable-tooling.ts
+++ b/lib/modules/manager/asdf/upgradeable-tooling.ts
@@ -1,8 +1,8 @@
-import { AdoptiumJavaDatasource } from '../../datasource/adoptium-java';
 import { DockerDatasource } from '../../datasource/docker';
 import { GithubReleasesDatasource } from '../../datasource/github-releases';
 import { GithubTagsDatasource } from '../../datasource/github-tags';
 import { HexpmBobDatasource } from '../../datasource/hexpm-bob';
+import { JavaVersionDatasource } from '../../datasource/java-version';
 import { NodeDatasource } from '../../datasource/node';
 import { RubyVersionDatasource } from '../../datasource/ruby-version';
 import * as regexVersioning from '../../versioning/regex';
@@ -181,7 +181,7 @@ export const upgradeableTooling: Record<string, ToolingDefinition> = {
       );
       if (adoptOpenJdkMatches) {
         return {
-          datasource: AdoptiumJavaDatasource.id,
+          datasource: JavaVersionDatasource.id,
           packageName: 'java-jdk',
           currentValue: adoptOpenJdkMatches.groups!.version,
         };
@@ -191,7 +191,7 @@ export const upgradeableTooling: Record<string, ToolingDefinition> = {
       );
       if (adoptOpenJreMatches) {
         return {
-          datasource: AdoptiumJavaDatasource.id,
+          datasource: JavaVersionDatasource.id,
           packageName: 'java-jre',
           currentValue: adoptOpenJreMatches.groups!.version,
         };
diff --git a/lib/util/exec/containerbase.ts b/lib/util/exec/containerbase.ts
index e884728d04..178f6b2944 100644
--- a/lib/util/exec/containerbase.ts
+++ b/lib/util/exec/containerbase.ts
@@ -71,7 +71,7 @@ const allToolConfig: Record<string, ToolConfig> = {
     versioning: semverVersioningId,
   },
   java: {
-    datasource: 'adoptium-java',
+    datasource: 'java-version',
     depName: 'java',
     versioning: npmVersioningId,
   },
-- 
GitLab