0
0
Fork 0
mirror of https://github.com/renovatebot/renovate.git synced 2025-05-12 23:51:55 +00:00
renovatebot_renovate/lib/modules/versioning/schema.ts
renovate[bot] 86408be681
build(deps): update dependency @sindresorhus/is to v7 (main) (#35682)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2025-05-02 09:43:35 +00:00

39 lines
1.1 KiB
TypeScript

import is from '@sindresorhus/is';
import { z } from 'zod';
import { logger } from '../../logger';
import versionings from './api';
import * as defaultVersioning from './semver-coerced';
import type { VersioningApi } from './types';
export const Versioning = z
.string()
.transform((versioningSpec, ctx): VersioningApi => {
const [versioningName, ...versioningRest] = versioningSpec.split(':');
let versioning = versionings.get(versioningName);
if (!versioning) {
logger.debug(
`Versioning: '${versioningSpec}' not found, falling back to ${defaultVersioning.id}`,
);
return defaultVersioning.api;
}
if (is.function(versioning)) {
const versioningConfig = versioningRest.length
? versioningRest.join(':')
: undefined;
try {
versioning = new versioning(versioningConfig);
} catch (error) {
ctx.addIssue({
code: 'custom',
message: `Versioning: '${versioningSpec}' failed to initialize`,
params: { error },
});
return z.NEVER;
}
}
return versioning;
});