diff --git a/lib/config/migrations/custom/datasource-migration.spec.ts b/lib/config/migrations/custom/datasource-migration.spec.ts new file mode 100644 index 00000000000000..08d768de893c24 --- /dev/null +++ b/lib/config/migrations/custom/datasource-migration.spec.ts @@ -0,0 +1,14 @@ +import { DatasourceMigration } from './datasource-migration'; + +describe('config/migrations/custom/datasource-migration', () => { + it('should migrate properly', () => { + expect(DatasourceMigration).toMigrate( + { + datasource: 'dotnet', + }, + { + datasource: 'dotnet-version', + } + ); + }); +}); diff --git a/lib/config/migrations/custom/datasource-migration.ts b/lib/config/migrations/custom/datasource-migration.ts new file mode 100644 index 00000000000000..2f742930562a80 --- /dev/null +++ b/lib/config/migrations/custom/datasource-migration.ts @@ -0,0 +1,14 @@ +import is from '@sindresorhus/is'; +import { AbstractMigration } from '../base/abstract-migration'; + +export class DatasourceMigration extends AbstractMigration { + override readonly propertyName = 'datasource'; + + override run(value: unknown): void { + if (is.string(value)) { + const newValue = value === 'dotnet' ? 'dotnet-version' : value; + + 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 new file mode 100644 index 00000000000000..9c8187380e6cc2 --- /dev/null +++ b/lib/config/migrations/custom/match-datasources-migration.spec.ts @@ -0,0 +1,14 @@ +import { MatchDatasourcesMigration } from './match-datasources-migration'; + +describe('config/migrations/custom/match-datasources-migration', () => { + it('should migrate properly', () => { + expect(MatchDatasourcesMigration).toMigrate( + { + matchDatasources: ['dotnet'], + }, + { + matchDatasources: ['dotnet-version'], + } + ); + }); +}); diff --git a/lib/config/migrations/custom/match-datasources-migration.ts b/lib/config/migrations/custom/match-datasources-migration.ts new file mode 100644 index 00000000000000..af9a043839ccab --- /dev/null +++ b/lib/config/migrations/custom/match-datasources-migration.ts @@ -0,0 +1,18 @@ +import is from '@sindresorhus/is'; +import { AbstractMigration } from '../base/abstract-migration'; + +export class MatchDatasourcesMigration extends AbstractMigration { + override readonly propertyName = 'matchDatasources'; + + override run(value: unknown): void { + if (Array.isArray(value)) { + const newValue = value + .filter(is.nonEmptyString) + .map((datasource) => + datasource === 'dotnet' ? 'dotnet-version' : datasource + ); + + this.rewrite(newValue); + } + } +} diff --git a/lib/config/migrations/migrations-service.ts b/lib/config/migrations/migrations-service.ts index 4029611673049d..3456b2f979b6ff 100644 --- a/lib/config/migrations/migrations-service.ts +++ b/lib/config/migrations/migrations-service.ts @@ -15,6 +15,7 @@ import { BranchNameMigration } from './custom/branch-name-migration'; import { BranchPrefixMigration } from './custom/branch-prefix-migration'; import { CompatibilityMigration } from './custom/compatibility-migration'; import { ComposerIgnorePlatformReqsMigration } from './custom/composer-ignore-platform-reqs-migration'; +import { DatasourceMigration } from './custom/datasource-migration'; import { DepTypesMigration } from './custom/dep-types-migration'; import { DryRunMigration } from './custom/dry-run-migration'; import { EnabledManagersMigration } from './custom/enabled-managers-migration'; @@ -23,6 +24,7 @@ import { GoModTidyMigration } from './custom/go-mod-tidy-migration'; import { HostRulesMigration } from './custom/host-rules-migration'; import { IgnoreNodeModulesMigration } from './custom/ignore-node-modules-migration'; import { IgnoreNpmrcFileMigration } from './custom/ignore-npmrc-file-migration'; +import { MatchDatasourcesMigration } from './custom/match-datasources-migration'; import { MatchStringsMigration } from './custom/match-strings-migration'; import { NodeMigration } from './custom/node-migration'; import { PackageFilesMigration } from './custom/package-files-migration'; @@ -71,6 +73,7 @@ export class MigrationsService { ]); static readonly renamedProperties: ReadonlyMap = new Map([ + ['dotnet', 'dotnet-version'], ['endpoints', 'hostRules'], ['excludedPackageNames', 'excludePackageNames'], ['exposeEnv', 'exposeAllEnv'], @@ -136,6 +139,8 @@ export class MigrationsService { PackageRulesMigration, NodeMigration, SemanticPrefixMigration, + MatchDatasourcesMigration, + DatasourceMigration, ]; static run(originalConfig: RenovateConfig): RenovateConfig { diff --git a/lib/modules/datasource/api.ts b/lib/modules/datasource/api.ts index 45592575d9f69b..915f18e6b9b27e 100644 --- a/lib/modules/datasource/api.ts +++ b/lib/modules/datasource/api.ts @@ -14,7 +14,7 @@ import { DartDatasource } from './dart'; import { DartVersionDatasource } from './dart-version'; import { DenoDatasource } from './deno'; import { DockerDatasource } from './docker'; -import { DotnetDatasource } from './dotnet'; +import { DotnetVersionDatasource } from './dotnet-version'; import { FlutterVersionDatasource } from './flutter-version'; import { GalaxyDatasource } from './galaxy'; import { GalaxyCollectionDatasource } from './galaxy-collection'; @@ -71,7 +71,7 @@ api.set(DartDatasource.id, new DartDatasource()); api.set(DartVersionDatasource.id, new DartVersionDatasource()); api.set(DenoDatasource.id, new DenoDatasource()); api.set(DockerDatasource.id, new DockerDatasource()); -api.set(DotnetDatasource.id, new DotnetDatasource()); +api.set(DotnetVersionDatasource.id, new DotnetVersionDatasource()); api.set(FlutterVersionDatasource.id, new FlutterVersionDatasource()); api.set(GalaxyDatasource.id, new GalaxyDatasource()); api.set(GalaxyCollectionDatasource.id, new GalaxyCollectionDatasource()); diff --git a/lib/modules/datasource/dotnet/__fixtures__/releases-3.1.json b/lib/modules/datasource/dotnet-version/__fixtures__/releases-3.1.json similarity index 100% rename from lib/modules/datasource/dotnet/__fixtures__/releases-3.1.json rename to lib/modules/datasource/dotnet-version/__fixtures__/releases-3.1.json diff --git a/lib/modules/datasource/dotnet/__fixtures__/releases-5.0.json b/lib/modules/datasource/dotnet-version/__fixtures__/releases-5.0.json similarity index 100% rename from lib/modules/datasource/dotnet/__fixtures__/releases-5.0.json rename to lib/modules/datasource/dotnet-version/__fixtures__/releases-5.0.json diff --git a/lib/modules/datasource/dotnet/__fixtures__/releases-6.0.json b/lib/modules/datasource/dotnet-version/__fixtures__/releases-6.0.json similarity index 100% rename from lib/modules/datasource/dotnet/__fixtures__/releases-6.0.json rename to lib/modules/datasource/dotnet-version/__fixtures__/releases-6.0.json diff --git a/lib/modules/datasource/dotnet/__fixtures__/releases-7.0.json b/lib/modules/datasource/dotnet-version/__fixtures__/releases-7.0.json similarity index 100% rename from lib/modules/datasource/dotnet/__fixtures__/releases-7.0.json rename to lib/modules/datasource/dotnet-version/__fixtures__/releases-7.0.json diff --git a/lib/modules/datasource/dotnet/__fixtures__/releases-index.json b/lib/modules/datasource/dotnet-version/__fixtures__/releases-index.json similarity index 100% rename from lib/modules/datasource/dotnet/__fixtures__/releases-index.json rename to lib/modules/datasource/dotnet-version/__fixtures__/releases-index.json diff --git a/lib/modules/datasource/dotnet/index.spec.ts b/lib/modules/datasource/dotnet-version/index.spec.ts similarity index 89% rename from lib/modules/datasource/dotnet/index.spec.ts rename to lib/modules/datasource/dotnet-version/index.spec.ts index 2f0c203dd028ad..a0e3e0e18891be 100644 --- a/lib/modules/datasource/dotnet/index.spec.ts +++ b/lib/modules/datasource/dotnet-version/index.spec.ts @@ -2,7 +2,7 @@ import { getPkgReleases } from '..'; import { Fixtures } from '../../../../test/fixtures'; import * as httpMock from '../../../../test/http-mock'; import { EXTERNAL_HOST_ERROR } from '../../../constants/error-messages'; -import { DotnetDatasource } from '.'; +import { DotnetVersionDatasource } from '.'; const releasesIndex = Fixtures.getJson('releases-index.json'); const releases7_0 = Fixtures.getJson('releases-7.0.json'); @@ -13,12 +13,12 @@ const releases3_1 = Fixtures.getJson('releases-3.1.json'); const baseUrl = 'https://dotnetcli.blob.core.windows.net/dotnet/release-metadata'; -describe('modules/datasource/dotnet/index', () => { +describe('modules/datasource/dotnet-version/index', () => { describe('getReleases', () => { it('returns null for non-dotnet package', async () => { expect( await getPkgReleases({ - datasource: DotnetDatasource.id, + datasource: DotnetVersionDatasource.id, depName: 'non-dotnet', }) ).toBeNull(); @@ -29,7 +29,7 @@ describe('modules/datasource/dotnet/index', () => { expect( await getPkgReleases({ - datasource: DotnetDatasource.id, + datasource: DotnetVersionDatasource.id, depName: 'dotnet-sdk', }) ).toBeNull(); @@ -45,7 +45,7 @@ describe('modules/datasource/dotnet/index', () => { expect( await getPkgReleases({ - datasource: DotnetDatasource.id, + datasource: DotnetVersionDatasource.id, depName: 'dotnet-sdk', }) ).toBeNull(); @@ -56,7 +56,7 @@ describe('modules/datasource/dotnet/index', () => { await expect( getPkgReleases({ - datasource: DotnetDatasource.id, + datasource: DotnetVersionDatasource.id, depName: 'dotnet-sdk', }) ).rejects.toThrow(EXTERNAL_HOST_ERROR); @@ -72,7 +72,7 @@ describe('modules/datasource/dotnet/index', () => { await expect( getPkgReleases({ - datasource: DotnetDatasource.id, + datasource: DotnetVersionDatasource.id, depName: 'dotnet-sdk', }) ).rejects.toThrow(EXTERNAL_HOST_ERROR); @@ -83,7 +83,7 @@ describe('modules/datasource/dotnet/index', () => { expect( await getPkgReleases({ - datasource: DotnetDatasource.id, + datasource: DotnetVersionDatasource.id, depName: 'dotnet-sdk', }) ).toBeNull(); @@ -99,7 +99,7 @@ describe('modules/datasource/dotnet/index', () => { expect( await getPkgReleases({ - datasource: DotnetDatasource.id, + datasource: DotnetVersionDatasource.id, depName: 'dotnet-sdk', }) ).toBeNull(); @@ -120,7 +120,7 @@ describe('modules/datasource/dotnet/index', () => { .reply(200, releases3_1); const res = await getPkgReleases({ - datasource: DotnetDatasource.id, + datasource: DotnetVersionDatasource.id, depName: 'dotnet-sdk', }); @@ -154,7 +154,7 @@ describe('modules/datasource/dotnet/index', () => { .reply(200, releases3_1); const res = await getPkgReleases({ - datasource: DotnetDatasource.id, + datasource: DotnetVersionDatasource.id, depName: 'dotnet-runtime', }); diff --git a/lib/modules/datasource/dotnet/index.ts b/lib/modules/datasource/dotnet-version/index.ts similarity index 90% rename from lib/modules/datasource/dotnet/index.ts rename to lib/modules/datasource/dotnet-version/index.ts index 196e09a807c625..db8fce0494850b 100644 --- a/lib/modules/datasource/dotnet/index.ts +++ b/lib/modules/datasource/dotnet-version/index.ts @@ -11,11 +11,11 @@ import { DotnetReleasesSchema, } from './schema'; -export class DotnetDatasource extends Datasource { - static readonly id = 'dotnet'; +export class DotnetVersionDatasource extends Datasource { + static readonly id = 'dotnet-version'; constructor() { - super(DotnetDatasource.id); + super(DotnetVersionDatasource.id); } override readonly caching = true; @@ -27,7 +27,7 @@ export class DotnetDatasource extends Datasource { ]; @cache({ - namespace: `datasource-${DotnetDatasource.id}`, + namespace: `datasource-${DotnetVersionDatasource.id}`, key: ({ packageName }: GetReleasesConfig) => packageName, ttlMinutes: 1440, }) @@ -77,7 +77,7 @@ export class DotnetDatasource extends Datasource { } @cache({ - namespace: `datasource-${DotnetDatasource.id}`, + namespace: `datasource-${DotnetVersionDatasource.id}`, key: (releaseUrl: string, packageName: string) => `${releaseUrl}:${packageName}`, ttlMinutes: 1440, @@ -97,7 +97,7 @@ export class DotnetDatasource extends Datasource { const body = raw?.body; if (body) { - const type = DotnetDatasource.getType(packageName); + const type = DotnetVersionDatasource.getType(packageName); const { releases: releases } = body; result = releases .filter( diff --git a/lib/modules/datasource/dotnet/readme.md b/lib/modules/datasource/dotnet-version/readme.md similarity index 100% rename from lib/modules/datasource/dotnet/readme.md rename to lib/modules/datasource/dotnet-version/readme.md diff --git a/lib/modules/datasource/dotnet/schema.ts b/lib/modules/datasource/dotnet-version/schema.ts similarity index 100% rename from lib/modules/datasource/dotnet/schema.ts rename to lib/modules/datasource/dotnet-version/schema.ts diff --git a/lib/modules/manager/nuget/extract.spec.ts b/lib/modules/manager/nuget/extract.spec.ts index f038ea48a3e880..ba8b9b84e7af84 100644 --- a/lib/modules/manager/nuget/extract.spec.ts +++ b/lib/modules/manager/nuget/extract.spec.ts @@ -2,7 +2,7 @@ import upath from 'upath'; import { Fixtures } from '../../../../test/fixtures'; import { GlobalConfig } from '../../../config/global'; import type { RepoGlobalConfig } from '../../../config/types'; -import { DotnetDatasource } from '../../datasource/dotnet'; +import { DotnetVersionDatasource } from '../../datasource/dotnet-version'; import type { ExtractConfig } from '../types'; import { extractPackageFile } from '.'; @@ -250,7 +250,7 @@ describe('modules/manager/nuget/extract', () => { currentValue: '5.0.302', depName: 'dotnet-sdk', depType: 'dotnet-sdk', - datasource: DotnetDatasource.id, + datasource: DotnetVersionDatasource.id, }, { currentValue: '0.2.0', @@ -273,7 +273,7 @@ describe('modules/manager/nuget/extract', () => { currentValue: '5.0.302', depName: 'dotnet-sdk', depType: 'dotnet-sdk', - datasource: DotnetDatasource.id, + datasource: DotnetVersionDatasource.id, }, ], }); diff --git a/lib/modules/manager/nuget/extract/global-manifest.ts b/lib/modules/manager/nuget/extract/global-manifest.ts index d238aa38751fe7..9995fffe0bf3f6 100644 --- a/lib/modules/manager/nuget/extract/global-manifest.ts +++ b/lib/modules/manager/nuget/extract/global-manifest.ts @@ -1,5 +1,5 @@ import { logger } from '../../../../logger'; -import { DotnetDatasource } from '../../../datasource/dotnet'; +import { DotnetVersionDatasource } from '../../../datasource/dotnet-version'; import { NugetDatasource } from '../../../datasource/nuget'; import type { PackageDependency, PackageFile } from '../../types'; import type { MsbuildGlobalManifest } from '../types'; @@ -31,7 +31,7 @@ export function extractMsbuildGlobalManifest( depType: 'dotnet-sdk', depName: 'dotnet-sdk', currentValue: manifest.sdk?.version, - datasource: DotnetDatasource.id, + datasource: DotnetVersionDatasource.id, }); } diff --git a/lib/modules/manager/nuget/index.ts b/lib/modules/manager/nuget/index.ts index 0f09b1258532f0..8f2a3253eb924f 100644 --- a/lib/modules/manager/nuget/index.ts +++ b/lib/modules/manager/nuget/index.ts @@ -1,5 +1,5 @@ import type { ProgrammingLanguage } from '../../../constants'; -import { DotnetDatasource } from '../../datasource/dotnet'; +import { DotnetVersionDatasource } from '../../datasource/dotnet-version'; import { NugetDatasource } from '../../datasource/nuget'; export { extractPackageFile } from './extract'; @@ -17,4 +17,7 @@ export const defaultConfig = { ], }; -export const supportedDatasources = [DotnetDatasource.id, NugetDatasource.id]; +export const supportedDatasources = [ + DotnetVersionDatasource.id, + NugetDatasource.id, +];