Files
renovate/lib/modules/manager/mise/index.ts
Pieter Willekens 141e136869 feat(manager/mise): support gitlab backend (#44116)
* feat(manager/mise): support gitlab backend

Maps the mise `gitlab` backend (e.g. `gitlab:gitlab-org/cli`) to the gitlab-releases datasource, mirroring the github backend including version_prefix support.

* refactor(manager/mise): use optional instead of Nullish for tool options

TOML has no null type, so MiseToolOptions values are only ever a string or absent. .optional() models that exactly; Nullish only adds value for sources that can emit explicit null.

* fix(manager/mise): use RegExp.escape in gitlab backend

Main switched `createGithubToolConfig` from the `escapeRegExp` util to
`RegExp.escape` and dropped the import, which left the newly added
`createGitlabToolConfig` referencing an undefined symbol after the merge.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Michael Kriese <michael.kriese@mend.io>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-11 10:04:37 +00:00

87 lines
3.4 KiB
TypeScript

import { deduplicateArray } from '../../../util/array.ts';
import { CrateDatasource } from '../../datasource/crate/index.ts';
import { GitRefsDatasource } from '../../datasource/git-refs/index.ts';
import { GitTagsDatasource } from '../../datasource/git-tags/index.ts';
import { GithubReleasesDatasource } from '../../datasource/github-releases/index.ts';
import { GithubTagsDatasource } from '../../datasource/github-tags/index.ts';
import { GitlabReleasesDatasource } from '../../datasource/gitlab-releases/index.ts';
import { GoDatasource } from '../../datasource/go/index.ts';
import { JavaVersionDatasource } from '../../datasource/java-version/index.ts';
import { NodeVersionDatasource } from '../../datasource/node-version/index.ts';
import { NpmDatasource } from '../../datasource/npm/index.ts';
import { NugetDatasource } from '../../datasource/nuget/index.ts';
import { PypiDatasource } from '../../datasource/pypi/index.ts';
import { RubyVersionDatasource } from '../../datasource/ruby-version/index.ts';
import { RubygemsDatasource } from '../../datasource/rubygems/index.ts';
import { RustVersionDatasource } from '../../datasource/rust-version/index.ts';
import { supportedDatasources as asdfSupportedDatasources } from '../asdf/index.ts';
export { updateArtifacts } from './artifacts.ts';
export { knownDepTypes, supportsDynamicDepTypesNote } from './dep-types.ts';
export { extractPackageFile } from './extract.ts';
export { updateLockedDependency } from './update-locked.ts';
export const displayName = 'mise-en-place';
export const supportsLockFileMaintenance = true;
export const lockFileNames = ['mise.lock'];
export const lockFileMaintenanceIsDelegatedToPackageManager = true;
export const url = 'https://mise.jdx.dev';
export const defaultConfig = {
managerFilePatterns: [
'**/{,.}mise{,.*}.toml',
'**/{,.}mise/config{,.*}.toml',
'**/.config/mise{,.*}.toml',
'**/.config/mise/{mise,config}{,.*}.toml',
'**/.config/mise/conf.d/*.toml',
'**/.rtx{,.*}.toml',
],
pinDigests: false,
};
const backendDatasources = {
core: [
GithubReleasesDatasource.id,
GithubTagsDatasource.id,
JavaVersionDatasource.id,
NodeVersionDatasource.id,
RubyVersionDatasource.id,
RustVersionDatasource.id,
],
// Re-use the asdf datasources, as mise and asdf support the same plugins.
asdf: asdfSupportedDatasources,
aqua: [GithubTagsDatasource.id],
cargo: [CrateDatasource.id, GitTagsDatasource.id, GitRefsDatasource.id],
dotnet: [NugetDatasource.id],
gem: [RubygemsDatasource.id],
github: [GithubReleasesDatasource.id],
gitlab: [GitlabReleasesDatasource.id],
go: [GoDatasource.id],
npm: [NpmDatasource.id],
pipx: [PypiDatasource.id, GithubTagsDatasource.id, GitRefsDatasource.id],
spm: [GithubReleasesDatasource.id],
ubi: [GithubReleasesDatasource.id],
// not supported
vfox: [],
};
/**
* Backends that are definitely supported out-of-the-box with Renovate.
*/
export const supportedBackendDatasources = new Set(
Object.keys(backendDatasources).filter((key) => key !== 'vfox'),
);
/**
* Backends that may require some additional work for users to configure Renovate to update them.
*/
export const maybeSupportedBackendDatasources = new Set<string>(
Object.keys(backendDatasources).filter(
(key) => key === 'vfox' || key === 'aqua',
),
);
export const supportedDatasources = deduplicateArray(
Object.values(backendDatasources).flat(),
).sort();