From a8c83970ac34a7be28f3f0ed1b4501c615972f0e Mon Sep 17 00:00:00 2001 From: Aleksandr Mezin <amezin@plesk.com> Date: Tue, 28 Nov 2023 11:28:09 +0200 Subject: [PATCH] feat(datasource/custom): expose newDigest in result (#26007) --- lib/modules/datasource/custom/index.spec.ts | 30 +++++++++++++++++++++ lib/modules/datasource/custom/readme.md | 3 ++- lib/modules/datasource/custom/schema.ts | 25 +++++++++++------ 3 files changed, 49 insertions(+), 9 deletions(-) diff --git a/lib/modules/datasource/custom/index.spec.ts b/lib/modules/datasource/custom/index.spec.ts index a6b57f0e7a..001e807c47 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 d23540771a..863d51800f 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 b618f98012..532d44b5a1 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(), -- GitLab