Files
renovate/lib/modules/versioning/api.ts
T
Jamie Tanna d508716886 feat(versioning): add a github-actions versioning (#42712)
GitHub Actions' versioning somewhat mirrors the SemVer-style versioning,
but doesn't quite.

This is in the case that it's common to use (mutable) tags like `v7` or
`v4.2`, as well as full SemVer style` `v1.2.3` and `v1.3.4-rc2`, doesn't
quite match it.

In addition, with GitHub's recent move to introduce Immutable Tags,
these require new releases to be a full SemVer `major.minor.patch` tag.

However, we don't currently have a way to take users from `@v7` to
`@v8.1.1`, in the case they're using Immutable Tags.

Given this isn't currently straightforward with any of our existing
SemVer-y versioning modules like `semver-coerced` or `semver-partial`,
we should instead introduce a specific Versioning module.

This mostly covers the functionality that `semver-partial` has, but
needs to take advantage of the `allVersions` parameter to find the
"shortest" possible tag for a given resolved Semantic Version.

This was previously attempted in previous changes, but reverted in
db64cc6de0 due to additional complexity.

We won't turn it on by default right now, but as a future change.

Co-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@mend.io>
2026-04-17 19:07:45 +00:00

112 lines
4.4 KiB
TypeScript

import * as apk from './apk/index.ts';
import * as awsEksAddon from './aws-eks-addon/index.ts';
import * as amazonMachineImage from './aws-machine-image/index.ts';
import * as azureRestApi from './azure-rest-api/index.ts';
import * as bazelModule from './bazel-module/index.ts';
import * as cargo from './cargo/index.ts';
import * as composer from './composer/index.ts';
import * as conan from './conan/index.ts';
import * as conda from './conda/index.ts';
import * as deb from './deb/index.ts';
import * as debian from './debian/index.ts';
import * as deno from './deno/index.ts';
import * as devbox from './devbox/index.ts';
import * as docker from './docker/index.ts';
import * as elm from './elm/index.ts';
import * as exact from './exact/index.ts';
import * as git from './git/index.ts';
import * as githubActions from './github-actions/index.ts';
import * as glasskube from './glasskube/index.ts';
import * as goModDirective from './go-mod-directive/index.ts';
import * as gradle from './gradle/index.ts';
import * as hashicorp from './hashicorp/index.ts';
import * as helm from './helm/index.ts';
import * as hermit from './hermit/index.ts';
import * as hex from './hex/index.ts';
import * as ivy from './ivy/index.ts';
import * as kubernetesApi from './kubernetes-api/index.ts';
import * as lambdaNode from './lambda-node/index.ts';
import * as loose from './loose/index.ts';
import * as maven from './maven/index.ts';
import * as nixpkgs from './nixpkgs/index.ts';
import * as node from './node/index.ts';
import * as npm from './npm/index.ts';
import * as nuget from './nuget/index.ts';
import * as pep440 from './pep440/index.ts';
import * as perl from './perl/index.ts';
import * as poetry from './poetry/index.ts';
import * as pvp from './pvp/index.ts';
import * as python from './python/index.ts';
import * as redhat from './redhat/index.ts';
import * as regex from './regex/index.ts';
import * as rez from './rez/index.ts';
import * as rpm from './rpm/index.ts';
import * as ruby from './ruby/index.ts';
import * as rustReleaseChannel from './rust-release-channel/index.ts';
import * as sameMajor from './same-major/index.ts';
import * as semver from './semver/index.ts';
import * as semverCoerced from './semver-coerced/index.ts';
import * as semverPartial from './semver-partial/index.ts';
import * as swift from './swift/index.ts';
import type { VersioningApi, VersioningApiConstructor } from './types.ts';
import * as ubuntu from './ubuntu/index.ts';
import * as unity3d from './unity3d/index.ts';
import * as unity3dPackages from './unity3d-packages/index.ts';
const api = new Map<string, VersioningApi | VersioningApiConstructor>();
export default api;
api.set(apk.id, apk.api);
api.set(awsEksAddon.id, awsEksAddon.api);
api.set(amazonMachineImage.id, amazonMachineImage.api);
api.set(azureRestApi.id, azureRestApi.api);
api.set(bazelModule.id, bazelModule.api);
api.set(cargo.id, cargo.api);
api.set(composer.id, composer.api);
api.set(conan.id, conan.api);
api.set(conda.id, conda.api);
api.set(deb.id, deb.api);
api.set(debian.id, debian.api);
api.set(deno.id, deno.api);
api.set(devbox.id, devbox.api);
api.set(docker.id, docker.api);
api.set(elm.id, elm.api);
api.set(exact.id, exact.api);
api.set(git.id, git.api);
api.set(githubActions.id, githubActions.api);
api.set(glasskube.id, glasskube.api);
api.set(goModDirective.id, goModDirective.api);
api.set(gradle.id, gradle.api);
api.set(hashicorp.id, hashicorp.api);
api.set(helm.id, helm.api);
api.set(hermit.id, hermit.api);
api.set(hex.id, hex.api);
api.set(ivy.id, ivy.api);
api.set(kubernetesApi.id, kubernetesApi.api);
api.set(lambdaNode.id, lambdaNode.api);
api.set(loose.id, loose.api);
api.set(maven.id, maven.api);
api.set(nixpkgs.id, nixpkgs.api);
api.set(node.id, node.api);
api.set(npm.id, npm.api);
api.set(nuget.id, nuget.api);
api.set(pep440.id, pep440.api);
api.set(perl.id, perl.api);
api.set(poetry.id, poetry.api);
api.set(pvp.id, pvp.api);
api.set(python.id, python.api);
api.set(redhat.id, redhat.api);
api.set(regex.id, regex.api);
api.set(rez.id, rez.api);
api.set(rpm.id, rpm.api);
api.set(ruby.id, ruby.api);
api.set(rustReleaseChannel.id, rustReleaseChannel.api);
api.set(sameMajor.id, sameMajor.api);
api.set(semver.id, semver.api);
api.set(semverCoerced.id, semverCoerced.api);
api.set(semverPartial.id, semverPartial.api);
api.set(swift.id, swift.api);
api.set(ubuntu.id, ubuntu.api);
api.set(unity3d.id, unity3d.api);
api.set(unity3dPackages.id, unity3dPackages.api);