mirror of
https://github.com/renovatebot/renovate.git
synced 2026-10-26 07:20:39 +00:00
4a2578d18d
* build(deps): update dependency zod to v4 | datasource | package | from | to | | ---------- | ------- | ------- | ----- | | npm | zod | 3.25.76 | 4.3.6 | * fix: zod migration --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
68 lines
1.8 KiB
TypeScript
68 lines
1.8 KiB
TypeScript
import parseGithubUrl from 'github-url-from-git';
|
|
import { z } from 'zod/v3';
|
|
import { logger } from '../../../../logger/index.ts';
|
|
import { regEx } from '../../../../util/regex.ts';
|
|
import { isHttpUrl } from '../../../../util/url.ts';
|
|
import { GithubReleasesDatasource } from '../../../datasource/github-releases/index.ts';
|
|
import { GithubTagsDatasource } from '../../../datasource/github-tags/index.ts';
|
|
import type { PackageDependency } from '../../types.ts';
|
|
|
|
const githubUrlRegex = regEx(
|
|
/^https:\/\/github\.com\/(?<packageName>[^/]+\/[^/]+)/,
|
|
);
|
|
|
|
function githubPackageName(input: string): string | undefined {
|
|
// istanbul ignore if
|
|
if (!isHttpUrl(input)) {
|
|
logger.once.info({ url: input }, `Bazel: non-https git_repository URL`);
|
|
}
|
|
return parseGithubUrl(input)?.match(githubUrlRegex)?.groups?.packageName;
|
|
}
|
|
|
|
export const gitRules = [
|
|
'git_repository',
|
|
'_git_repository',
|
|
'new_git_repository',
|
|
'_new_git_repository',
|
|
] as const;
|
|
|
|
export const GitTarget = z
|
|
.object({
|
|
rule: z.enum(gitRules),
|
|
name: z.string(),
|
|
tag: z.string().optional(),
|
|
commit: z.string().optional(),
|
|
remote: z.string(),
|
|
})
|
|
.refine(({ tag, commit }) => !!tag || !!commit)
|
|
.transform(({ rule, name, tag, commit, remote }): PackageDependency[] => {
|
|
const dep: PackageDependency = {
|
|
depType: rule,
|
|
depName: name,
|
|
};
|
|
|
|
if (tag) {
|
|
dep.currentValue = tag;
|
|
}
|
|
|
|
if (commit) {
|
|
dep.currentDigest = commit;
|
|
}
|
|
|
|
const githubPackage = githubPackageName(remote);
|
|
if (githubPackage) {
|
|
dep.packageName = githubPackage;
|
|
if (dep.currentValue) {
|
|
dep.datasource = GithubReleasesDatasource.id;
|
|
} else {
|
|
dep.datasource = GithubTagsDatasource.id;
|
|
}
|
|
}
|
|
|
|
if (!dep.datasource) {
|
|
dep.skipReason = 'unsupported-datasource';
|
|
}
|
|
|
|
return [dep];
|
|
});
|