Files
renovate/lib/modules/manager/bazel/rules/git.ts
T
renovate[bot] 4a2578d18d build(deps): update dependency zod to v4 (main) (#41225)
* 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>
2026-02-18 07:37:50 +00:00

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];
});