renovate
Version:
Automated dependency updates. Flexible so you don't need to be.
159 lines (158 loc) • 4.6 kB
JavaScript
import { escapeRegExp, regEx } from "../../../util/regex.js";
import "../../versioning/npm/index.js";
import { id } from "../../versioning/conda/index.js";
import { DockerDatasource } from "../../datasource/docker/index.js";
import { GithubReleasesDatasource } from "../../datasource/github-releases/index.js";
import { NpmDatasource } from "../../datasource/npm/index.js";
import { PypiDatasource } from "../../datasource/pypi/index.js";
import { RubyVersionDatasource } from "../../datasource/ruby-version/index.js";
import { z } from "zod/v4";
//#region lib/modules/manager/github-actions/community.ts
function actionSchema(name, { isInvalid, withSchema, ...cfg }) {
return z.object({
uses: matchAction(name),
with: withSchema ?? VersionVal
}).transform(({ with: { val, ...meta } }) => ({
...cfg,
...meta,
...parseValue(val, isInvalid)
})).transform((dep) => {
dep.depName ??= dep.packageName;
return dep;
});
}
function matchAction(action) {
return z.string().regex(regEx(`(?:https?://[^/]+/)?${escapeRegExp(action)}(?:@.+)?$`));
}
function parseValue(currentValue, isInvalid) {
if (!currentValue) return {
skipStage: "extract",
skipReason: "unspecified-version",
depType: "uses-with"
};
if (isInvalid?.(currentValue) === true) return {
skipStage: "extract",
skipReason: "invalid-version",
depType: "uses-with",
currentValue
};
return {
currentValue,
depType: "uses-with"
};
}
function valSchema(key) {
return z.object({ [key]: z.string().optional() }).transform((val) => ({ val: val[key] }));
}
const VersionVal = z.object({ version: z.string().optional() }).transform((val) => ({ val: val.version }));
const InstallBinaryWith = z.object({
repo: z.string(),
tag: z.string()
}).transform(({ repo, tag }) => ({
packageName: repo,
val: tag
}));
/**
* Community contributed actions with known version input schemas.
*/
const communityActions = {
"aquasecurity/setup-trivy": {
datasource: GithubReleasesDatasource.id,
packageName: "aquasecurity/trivy"
},
"aquasecurity/trivy-action": {
datasource: GithubReleasesDatasource.id,
packageName: "aquasecurity/trivy"
},
"astral-sh/setup-uv": {
datasource: GithubReleasesDatasource.id,
versioning: "npm",
packageName: "astral-sh/uv"
},
"azure/setup-helm": {
datasource: GithubReleasesDatasource.id,
depName: "helm",
packageName: "helm/helm"
},
"denoland/setup-deno": {
datasource: NpmDatasource.id,
packageName: "deno",
withSchema: valSchema("deno-version")
},
"docker/setup-buildx-action": {
datasource: GithubReleasesDatasource.id,
depName: "buildx",
packageName: "docker/buildx"
},
"docker/setup-compose-action": {
datasource: GithubReleasesDatasource.id,
packageName: "docker/compose"
},
"docker/setup-docker-action": {
datasource: GithubReleasesDatasource.id,
depName: "docker",
packageName: "moby/moby",
extractVersion: "^docker-(?<version>.+)$"
},
"golangci/golangci-lint-action": {
datasource: GithubReleasesDatasource.id,
packageName: "golangci/golangci-lint"
},
"helm/chart-testing-action": {
datasource: GithubReleasesDatasource.id,
depName: "chart-testing",
packageName: "helm/chart-testing"
},
"jakebailey/pyright-action": {
datasource: NpmDatasource.id,
packageName: "pyright",
isInvalid: (val) => val === "PATH"
},
"jaxxstorm/action-install-gh-release": {
datasource: GithubReleasesDatasource.id,
packageName: "",
withSchema: InstallBinaryWith
},
"oven-sh/setup-bun": {
datasource: NpmDatasource.id,
packageName: "bun",
withSchema: valSchema("bun-version")
},
"pdm-project/setup-pdm": {
datasource: PypiDatasource.id,
packageName: "pdm"
},
"pnpm/action-setup": {
datasource: NpmDatasource.id,
packageName: "pnpm"
},
"prefix-dev/setup-pixi": {
datasource: GithubReleasesDatasource.id,
versioning: id,
packageName: "prefix-dev/pixi",
withSchema: valSchema("pixi-version")
},
"pypa/hatch": {
datasource: GithubReleasesDatasource.id,
packageName: "pypa/hatch",
extractVersion: "^hatch-(?<version>.+)$"
},
"ruby/setup-ruby": {
datasource: RubyVersionDatasource.id,
packageName: "ruby",
withSchema: valSchema("ruby-version")
},
"sigoden/install-binary": {
datasource: GithubReleasesDatasource.id,
packageName: "",
withSchema: InstallBinaryWith
},
"zizmorcore/zizmor-action": {
datasource: DockerDatasource.id,
packageName: "ghcr.io/zizmorcore/zizmor"
}
};
const CommunityActions = z.union(Object.entries(communityActions).map(([name, cfg]) => actionSchema(name, cfg)));
//#endregion
export { CommunityActions };
//# sourceMappingURL=community.js.map