diff --git a/lib/modules/datasource/custom/index.spec.ts b/lib/modules/datasource/custom/index.spec.ts index a6b57f0e7a8764bef36eac8799112279f32c6189..001e807c47fe4de2971b0dcfc60f5b6ee045f440 100644 --- a/lib/modules/datasource/custom/index.spec.ts +++ b/lib/modules/datasource/custom/index.spec.ts @@ -89,6 +89,36 @@ describe('modules/datasource/custom/index', () => { expect(result).toEqual(expected); }); + it('return releases with digests for api directly exposing in renovate format', async () => { + const expected = { + releases: [ + { + version: 'v1.0.0', + newDigest: '0123456789abcdef', + }, + ], + }; + const content = { + releases: [ + { + version: 'v1.0.0', + digest: '0123456789abcdef', + }, + ], + }; + httpMock.scope('https://example.com').get('/v1').reply(200, content); + const result = await getPkgReleases({ + datasource: `${CustomDatasource.id}.foo`, + packageName: 'myPackage', + customDatasources: { + foo: { + defaultRegistryUrlTemplate: 'https://example.com/v1', + }, + }, + }); + expect(result).toEqual(expected); + }); + it('return releases for plain text API directly exposing in Renovate format', async () => { const expected = { releases: [ diff --git a/lib/modules/datasource/custom/readme.md b/lib/modules/datasource/custom/readme.md index d23540771adc3c9d73a4eeac8a6b788691125c7a..863d51800feaa5dc04333f9157cdc0270d1c7be6 100644 --- a/lib/modules/datasource/custom/readme.md +++ b/lib/modules/datasource/custom/readme.md @@ -68,7 +68,8 @@ All available options: "releaseTimestamp": "2022-12-24T18:21Z", "changelogUrl": "https://github.com/demo-org/demo/blob/main/CHANGELOG.md#v0710", "sourceUrl": "https://github.com/demo-org/demo", - "sourceDirectory": "monorepo/folder" + "sourceDirectory": "monorepo/folder", + "digest": "c667f758f9e46e1d8111698e8d3a181c0b10f430" } ], "sourceUrl": "https://github.com/demo-org/demo", diff --git a/lib/modules/datasource/custom/schema.ts b/lib/modules/datasource/custom/schema.ts index b618f98012cf130dcf875960dfeedb1cace5a741..532d44b5a18b4be0cca13e528d7185f6c7b665c1 100644 --- a/lib/modules/datasource/custom/schema.ts +++ b/lib/modules/datasource/custom/schema.ts @@ -2,14 +2,23 @@ import { z } from 'zod'; export const ReleaseResultZodSchema = z.object({ releases: z.array( - z.object({ - version: z.string(), - isDeprecated: z.boolean().optional(), - releaseTimestamp: z.string().optional(), - sourceUrl: z.string().optional(), - sourceDirectory: z.string().optional(), - changelogUrl: z.string().optional(), - }), + z + .object({ + version: z.string(), + isDeprecated: z.boolean().optional(), + releaseTimestamp: z.string().optional(), + sourceUrl: z.string().optional(), + sourceDirectory: z.string().optional(), + changelogUrl: z.string().optional(), + digest: z.string().optional(), + }) + .transform((input) => { + return { + ...input, + newDigest: input.digest, + digest: undefined, + }; + }), ), sourceUrl: z.string().optional(), sourceDirectory: z.string().optional(),