mirror of
https://github.com/renovatebot/renovate.git
synced 2025-05-12 23:51:55 +00:00
![renovate[bot]](/assets/img/avatar_default.png)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
39 lines
1.1 KiB
TypeScript
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;
|
|
});
|