From 2a07e91be615bb0f2fd54232fdf3067e6d94cff1 Mon Sep 17 00:00:00 2001
From: RahulGautamSingh <rahultesnik@gmail.com>
Date: Sat, 5 Nov 2022 14:19:57 +0530
Subject: [PATCH] refactor: convert ProgrammingLanguage to union type (#18748)

Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
---
 lib/constants/programming-language.ts         | 31 ++++++++++---------
 lib/modules/manager/ansible/index.ts          |  4 +--
 lib/modules/manager/bundler/index.ts          |  4 +--
 lib/modules/manager/cake/index.ts             |  4 +--
 lib/modules/manager/cargo/index.ts            |  4 +--
 lib/modules/manager/composer/index.ts         |  4 +--
 lib/modules/manager/docker-compose/index.ts   |  4 +--
 lib/modules/manager/dockerfile/index.ts       |  4 +--
 lib/modules/manager/droneci/index.ts          |  4 +--
 lib/modules/manager/gitlabci/index.ts         |  4 +--
 lib/modules/manager/gomod/index.ts            |  4 +--
 lib/modules/manager/gradle/index.ts           |  4 +--
 lib/modules/manager/index.ts                  |  4 +--
 lib/modules/manager/kubernetes/index.ts       |  4 +--
 lib/modules/manager/maven/index.ts            |  4 +--
 lib/modules/manager/meteor/index.ts           |  4 +--
 lib/modules/manager/mix/index.ts              |  4 +--
 lib/modules/manager/nodenv/index.ts           |  4 +--
 lib/modules/manager/npm/index.ts              |  4 +--
 lib/modules/manager/nuget/index.ts            |  4 +--
 lib/modules/manager/nvm/index.ts              |  4 +--
 lib/modules/manager/pip-compile/index.ts      |  4 +--
 lib/modules/manager/pip_requirements/index.ts |  4 +--
 lib/modules/manager/pip_setup/index.ts        |  4 +--
 lib/modules/manager/pipenv/index.ts           |  4 +--
 lib/modules/manager/poetry/index.ts           |  4 +--
 lib/modules/manager/puppet/index.ts           |  4 +--
 lib/modules/manager/pyenv/index.ts            |  4 +--
 lib/modules/manager/ruby-version/index.ts     |  4 +--
 lib/modules/manager/setup-cfg/index.ts        |  4 +--
 lib/modules/manager/travis/index.ts           |  4 +--
 lib/modules/manager/woodpecker/index.ts       |  4 +--
 lib/util/package-rules/index.spec.ts          | 17 ++++------
 .../repository/updates/flatten.spec.ts        |  6 ++--
 34 files changed, 86 insertions(+), 92 deletions(-)

diff --git a/lib/constants/programming-language.ts b/lib/constants/programming-language.ts
index f34b5aabc6..f481973a7e 100644
--- a/lib/constants/programming-language.ts
+++ b/lib/constants/programming-language.ts
@@ -1,15 +1,16 @@
-// eslint-disable-next-line typescript-enum/no-enum
-export enum ProgrammingLanguage {
-  Dart = 'dart',
-  Docker = 'docker',
-  Elixir = 'elixir',
-  Golang = 'golang',
-  Java = 'java',
-  JavaScript = 'js',
-  NET = 'dotnet',
-  NodeJS = 'node',
-  PHP = 'php',
-  Python = 'python',
-  Ruby = 'ruby',
-  Rust = 'rust',
-}
+export const programmingLanguages = [
+  'dart',
+  'docker',
+  'elixir',
+  'golang',
+  'java',
+  'js',
+  'dotnet',
+  'node',
+  'php',
+  'python',
+  'ruby',
+  'rust',
+] as const;
+
+export type ProgrammingLanguage = typeof programmingLanguages[number];
diff --git a/lib/modules/manager/ansible/index.ts b/lib/modules/manager/ansible/index.ts
index e602eb37b7..c81d5468ca 100644
--- a/lib/modules/manager/ansible/index.ts
+++ b/lib/modules/manager/ansible/index.ts
@@ -1,8 +1,8 @@
-import { ProgrammingLanguage } from '../../../constants';
+import type { ProgrammingLanguage } from '../../../constants';
 import { DockerDatasource } from '../../datasource/docker';
 export { extractPackageFile } from './extract';
 
-export const language = ProgrammingLanguage.Docker;
+export const language: ProgrammingLanguage = 'docker';
 
 export const defaultConfig = {
   fileMatch: ['(^|/)tasks/[^/]+\\.ya?ml$'],
diff --git a/lib/modules/manager/bundler/index.ts b/lib/modules/manager/bundler/index.ts
index 8f3ffc212b..aeaba3cec1 100644
--- a/lib/modules/manager/bundler/index.ts
+++ b/lib/modules/manager/bundler/index.ts
@@ -1,4 +1,4 @@
-import { ProgrammingLanguage } from '../../../constants';
+import type { ProgrammingLanguage } from '../../../constants';
 import { RubyVersionDatasource } from '../../datasource/ruby-version';
 import { RubyGemsDatasource } from '../../datasource/rubygems';
 import * as rubyVersioning from '../../versioning/ruby';
@@ -6,7 +6,7 @@ import { updateArtifacts } from './artifacts';
 import { extractPackageFile } from './extract';
 import { updateLockedDependency } from './update-locked';
 
-export const language = ProgrammingLanguage.Ruby;
+export const language: ProgrammingLanguage = 'ruby';
 export const supportsLockFileMaintenance = true;
 
 /*
diff --git a/lib/modules/manager/cake/index.ts b/lib/modules/manager/cake/index.ts
index 858a811d84..10b22ec435 100644
--- a/lib/modules/manager/cake/index.ts
+++ b/lib/modules/manager/cake/index.ts
@@ -1,10 +1,10 @@
 import moo from 'moo';
-import { ProgrammingLanguage } from '../../../constants';
+import type { ProgrammingLanguage } from '../../../constants';
 import { regEx } from '../../../util/regex';
 import { NugetDatasource } from '../../datasource/nuget';
 import type { PackageDependency, PackageFile } from '../types';
 
-export const language = ProgrammingLanguage.NET;
+export const language: ProgrammingLanguage = 'dotnet';
 
 export const defaultConfig = {
   fileMatch: ['\\.cake$'],
diff --git a/lib/modules/manager/cargo/index.ts b/lib/modules/manager/cargo/index.ts
index c910bbb819..c7768858e3 100644
--- a/lib/modules/manager/cargo/index.ts
+++ b/lib/modules/manager/cargo/index.ts
@@ -1,10 +1,10 @@
-import { ProgrammingLanguage } from '../../../constants';
+import type { ProgrammingLanguage } from '../../../constants';
 import { CrateDatasource } from '../../datasource/crate';
 import * as cargoVersioning from '../../versioning/cargo';
 import { updateArtifacts } from './artifacts';
 import { extractPackageFile } from './extract';
 
-export const language = ProgrammingLanguage.Rust;
+export const language: ProgrammingLanguage = 'rust';
 export const supportsLockFileMaintenance = true;
 
 export { extractPackageFile, updateArtifacts };
diff --git a/lib/modules/manager/composer/index.ts b/lib/modules/manager/composer/index.ts
index 90a5a32742..54289b8976 100644
--- a/lib/modules/manager/composer/index.ts
+++ b/lib/modules/manager/composer/index.ts
@@ -1,4 +1,4 @@
-import { ProgrammingLanguage } from '../../../constants';
+import type { ProgrammingLanguage } from '../../../constants';
 import { GitTagsDatasource } from '../../datasource/git-tags';
 import { PackagistDatasource } from '../../datasource/packagist';
 import { updateArtifacts } from './artifacts';
@@ -7,7 +7,7 @@ import { getRangeStrategy } from './range';
 import { updateLockedDependency } from './update-locked';
 import { composerVersioningId } from './utils';
 
-export const language = ProgrammingLanguage.PHP;
+export const language: ProgrammingLanguage = 'php';
 export const supportsLockFileMaintenance = true;
 
 export {
diff --git a/lib/modules/manager/docker-compose/index.ts b/lib/modules/manager/docker-compose/index.ts
index a8f9644764..69d28ba6a3 100644
--- a/lib/modules/manager/docker-compose/index.ts
+++ b/lib/modules/manager/docker-compose/index.ts
@@ -1,8 +1,8 @@
-import { ProgrammingLanguage } from '../../../constants';
+import type { ProgrammingLanguage } from '../../../constants';
 import { DockerDatasource } from '../../datasource/docker';
 import { extractPackageFile } from './extract';
 
-export const language = ProgrammingLanguage.Docker;
+export const language: ProgrammingLanguage = 'docker';
 
 export { extractPackageFile };
 
diff --git a/lib/modules/manager/dockerfile/index.ts b/lib/modules/manager/dockerfile/index.ts
index 4a01220187..0f6e68b7f6 100644
--- a/lib/modules/manager/dockerfile/index.ts
+++ b/lib/modules/manager/dockerfile/index.ts
@@ -1,8 +1,8 @@
-import { ProgrammingLanguage } from '../../../constants';
+import type { ProgrammingLanguage } from '../../../constants';
 import { DockerDatasource } from '../../datasource/docker';
 import { extractPackageFile } from './extract';
 
-export const language = ProgrammingLanguage.Docker;
+export const language: ProgrammingLanguage = 'docker';
 
 export { extractPackageFile };
 
diff --git a/lib/modules/manager/droneci/index.ts b/lib/modules/manager/droneci/index.ts
index 85f60b8c42..d7e7fa405c 100644
--- a/lib/modules/manager/droneci/index.ts
+++ b/lib/modules/manager/droneci/index.ts
@@ -1,8 +1,8 @@
-import { ProgrammingLanguage } from '../../../constants';
+import type { ProgrammingLanguage } from '../../../constants';
 import { DockerDatasource } from '../../datasource/docker';
 import { extractPackageFile } from './extract';
 
-export const language = ProgrammingLanguage.Docker;
+export const language: ProgrammingLanguage = 'docker';
 
 export { extractPackageFile };
 
diff --git a/lib/modules/manager/gitlabci/index.ts b/lib/modules/manager/gitlabci/index.ts
index 5c998edc03..0bfa5b4943 100644
--- a/lib/modules/manager/gitlabci/index.ts
+++ b/lib/modules/manager/gitlabci/index.ts
@@ -1,8 +1,8 @@
-import { ProgrammingLanguage } from '../../../constants';
+import type { ProgrammingLanguage } from '../../../constants';
 import { DockerDatasource } from '../../datasource/docker';
 import { extractAllPackageFiles, extractPackageFile } from './extract';
 
-export const language = ProgrammingLanguage.Docker;
+export const language: ProgrammingLanguage = 'docker';
 
 export { extractAllPackageFiles, extractPackageFile };
 
diff --git a/lib/modules/manager/gomod/index.ts b/lib/modules/manager/gomod/index.ts
index 271b5c1258..a5a79f1e92 100644
--- a/lib/modules/manager/gomod/index.ts
+++ b/lib/modules/manager/gomod/index.ts
@@ -1,4 +1,4 @@
-import { ProgrammingLanguage } from '../../../constants';
+import type { ProgrammingLanguage } from '../../../constants';
 import { GoDatasource } from '../../datasource/go';
 import { GolangVersionDatasource } from '../../datasource/golang-version';
 import { updateArtifacts } from './artifacts';
@@ -10,7 +10,7 @@ export { extractPackageFile, updateDependency, updateArtifacts };
 export const displayName = 'Go Modules';
 export const url = 'https://go.dev/ref/mod';
 
-export const language = ProgrammingLanguage.Golang;
+export const language: ProgrammingLanguage = 'golang';
 
 export const defaultConfig = {
   fileMatch: ['(^|/)go\\.mod$'],
diff --git a/lib/modules/manager/gradle/index.ts b/lib/modules/manager/gradle/index.ts
index 5fbb018fce..291e4d0c07 100644
--- a/lib/modules/manager/gradle/index.ts
+++ b/lib/modules/manager/gradle/index.ts
@@ -1,4 +1,4 @@
-import { ProgrammingLanguage } from '../../../constants';
+import type { ProgrammingLanguage } from '../../../constants';
 import { MavenDatasource } from '../../datasource/maven';
 import * as gradleVersioning from '../../versioning/gradle';
 
@@ -6,7 +6,7 @@ export { extractAllPackageFiles } from './extract';
 export { updateDependency } from './update';
 export { updateArtifacts } from './artifacts';
 
-export const language = ProgrammingLanguage.Java;
+export const language: ProgrammingLanguage = 'java';
 export const supportsLockFileMaintenance = true;
 
 export const defaultConfig = {
diff --git a/lib/modules/manager/index.ts b/lib/modules/manager/index.ts
index e8ee94bbaf..b4e833abce 100644
--- a/lib/modules/manager/index.ts
+++ b/lib/modules/manager/index.ts
@@ -1,4 +1,4 @@
-import { ProgrammingLanguage } from '../../constants';
+import { programmingLanguages } from '../../constants';
 import type { RangeStrategy } from '../../types';
 import managers from './api';
 import type {
@@ -12,7 +12,7 @@ import type {
 export { hashMap } from './fingerprint.generated';
 const managerList = Array.from(managers.keys());
 
-const languageList = Object.values(ProgrammingLanguage);
+const languageList = programmingLanguages.concat();
 
 export function get<T extends keyof ManagerApi>(
   manager: string,
diff --git a/lib/modules/manager/kubernetes/index.ts b/lib/modules/manager/kubernetes/index.ts
index 9e0bb7442e..1ab2c8dc6d 100644
--- a/lib/modules/manager/kubernetes/index.ts
+++ b/lib/modules/manager/kubernetes/index.ts
@@ -1,10 +1,10 @@
-import { ProgrammingLanguage } from '../../../constants';
+import type { ProgrammingLanguage } from '../../../constants';
 import { DockerDatasource } from '../../datasource/docker';
 import { KubernetesApiDatasource } from '../../datasource/kubernetes-api';
 
 export { extractPackageFile } from './extract';
 
-export const language = ProgrammingLanguage.Docker;
+export const language: ProgrammingLanguage = 'docker';
 
 export const defaultConfig = {
   fileMatch: [],
diff --git a/lib/modules/manager/maven/index.ts b/lib/modules/manager/maven/index.ts
index 9111471aeb..b6feaa85f9 100644
--- a/lib/modules/manager/maven/index.ts
+++ b/lib/modules/manager/maven/index.ts
@@ -1,11 +1,11 @@
-import { ProgrammingLanguage } from '../../../constants';
+import type { ProgrammingLanguage } from '../../../constants';
 import { MavenDatasource } from '../../datasource/maven';
 import * as mavenVersioning from '../../versioning/maven';
 
 export { extractAllPackageFiles } from './extract';
 export { bumpPackageVersion, updateDependency } from './update';
 
-export const language = ProgrammingLanguage.Java;
+export const language: ProgrammingLanguage = 'java';
 
 export const defaultConfig = {
   fileMatch: ['(^|/|\\.)pom\\.xml$', '^(((\\.mvn)|(\\.m2))/)?settings\\.xml$'],
diff --git a/lib/modules/manager/meteor/index.ts b/lib/modules/manager/meteor/index.ts
index c922b28096..a1826cc334 100644
--- a/lib/modules/manager/meteor/index.ts
+++ b/lib/modules/manager/meteor/index.ts
@@ -1,9 +1,9 @@
-import { ProgrammingLanguage } from '../../../constants';
+import type { ProgrammingLanguage } from '../../../constants';
 import { NpmDatasource } from '../../datasource/npm';
 
 export { extractPackageFile } from './extract';
 
-export const language = ProgrammingLanguage.JavaScript;
+export const language: ProgrammingLanguage = 'js';
 
 export const defaultConfig = {
   fileMatch: ['(^|/)package\\.js$'],
diff --git a/lib/modules/manager/mix/index.ts b/lib/modules/manager/mix/index.ts
index ef6040b2a8..7820dcded9 100644
--- a/lib/modules/manager/mix/index.ts
+++ b/lib/modules/manager/mix/index.ts
@@ -1,11 +1,11 @@
-import { ProgrammingLanguage } from '../../../constants';
+import type { ProgrammingLanguage } from '../../../constants';
 import { HexDatasource } from '../../datasource/hex';
 import * as hexVersioning from '../../versioning/hex';
 
 export { extractPackageFile } from './extract';
 export { updateArtifacts } from './artifacts';
 
-export const language = ProgrammingLanguage.Elixir;
+export const language: ProgrammingLanguage = 'elixir';
 
 export const defaultConfig = {
   fileMatch: ['(^|/)mix\\.exs$'],
diff --git a/lib/modules/manager/nodenv/index.ts b/lib/modules/manager/nodenv/index.ts
index c5bbc91460..093d18e922 100644
--- a/lib/modules/manager/nodenv/index.ts
+++ b/lib/modules/manager/nodenv/index.ts
@@ -1,4 +1,4 @@
-import { ProgrammingLanguage } from '../../../constants';
+import type { ProgrammingLanguage } from '../../../constants';
 import { GithubTagsDatasource } from '../../datasource/github-tags';
 import * as nodeVersioning from '../../versioning/node';
 
@@ -7,7 +7,7 @@ export { extractPackageFile } from './extract';
 export const displayName = 'nodenv';
 export const url = 'https://github.com/nodenv/nodenv';
 
-export const language = ProgrammingLanguage.NodeJS;
+export const language: ProgrammingLanguage = 'node';
 
 export const defaultConfig = {
   fileMatch: ['(^|/)\\.node-version$'],
diff --git a/lib/modules/manager/npm/index.ts b/lib/modules/manager/npm/index.ts
index 24a12df8d9..3ac8a7f281 100644
--- a/lib/modules/manager/npm/index.ts
+++ b/lib/modules/manager/npm/index.ts
@@ -1,4 +1,4 @@
-import { ProgrammingLanguage } from '../../../constants';
+import type { ProgrammingLanguage } from '../../../constants';
 import { GithubTagsDatasource } from '../../datasource/github-tags';
 import { NpmDatasource } from '../../datasource/npm';
 import * as npmVersioning from '../../versioning/npm';
@@ -12,7 +12,7 @@ export {
 } from './update';
 export { getRangeStrategy } from './range';
 
-export const language = ProgrammingLanguage.JavaScript;
+export const language: ProgrammingLanguage = 'js';
 export const supportsLockFileMaintenance = true;
 
 export const defaultConfig = {
diff --git a/lib/modules/manager/nuget/index.ts b/lib/modules/manager/nuget/index.ts
index ba268b2910..0f09b12585 100644
--- a/lib/modules/manager/nuget/index.ts
+++ b/lib/modules/manager/nuget/index.ts
@@ -1,4 +1,4 @@
-import { ProgrammingLanguage } from '../../../constants';
+import type { ProgrammingLanguage } from '../../../constants';
 import { DotnetDatasource } from '../../datasource/dotnet';
 import { NugetDatasource } from '../../datasource/nuget';
 
@@ -6,7 +6,7 @@ export { extractPackageFile } from './extract';
 export { updateArtifacts } from './artifacts';
 export { bumpPackageVersion } from './update';
 
-export const language = ProgrammingLanguage.NET;
+export const language: ProgrammingLanguage = 'dotnet';
 
 export const defaultConfig = {
   fileMatch: [
diff --git a/lib/modules/manager/nvm/index.ts b/lib/modules/manager/nvm/index.ts
index 70aaf8540a..0c9001f40c 100644
--- a/lib/modules/manager/nvm/index.ts
+++ b/lib/modules/manager/nvm/index.ts
@@ -1,4 +1,4 @@
-import { ProgrammingLanguage } from '../../../constants';
+import type { ProgrammingLanguage } from '../../../constants';
 import { GithubTagsDatasource } from '../../datasource/github-tags';
 import * as nodeVersioning from '../../versioning/node';
 
@@ -7,7 +7,7 @@ export { extractPackageFile } from './extract';
 export const displayName = 'nvm';
 export const url = 'https://github.com/nvm-sh/nvm';
 
-export const language = ProgrammingLanguage.NodeJS;
+export const language: ProgrammingLanguage = 'node';
 
 export const defaultConfig = {
   fileMatch: ['(^|/)\\.nvmrc$'],
diff --git a/lib/modules/manager/pip-compile/index.ts b/lib/modules/manager/pip-compile/index.ts
index dd5bb5ea67..fdde176cb5 100644
--- a/lib/modules/manager/pip-compile/index.ts
+++ b/lib/modules/manager/pip-compile/index.ts
@@ -1,10 +1,10 @@
-import { ProgrammingLanguage } from '../../../constants';
+import type { ProgrammingLanguage } from '../../../constants';
 import { PypiDatasource } from '../../datasource/pypi';
 
 export { extractPackageFile } from '../pip_requirements/extract';
 export { updateArtifacts } from './artifacts';
 
-export const language = ProgrammingLanguage.Python;
+export const language: ProgrammingLanguage = 'python';
 export const supportsLockFileMaintenance = true;
 
 export const supportedDatasources = [PypiDatasource.id];
diff --git a/lib/modules/manager/pip_requirements/index.ts b/lib/modules/manager/pip_requirements/index.ts
index 688ffbd3f8..4fe319227f 100644
--- a/lib/modules/manager/pip_requirements/index.ts
+++ b/lib/modules/manager/pip_requirements/index.ts
@@ -1,11 +1,11 @@
-import { ProgrammingLanguage } from '../../../constants';
+import type { ProgrammingLanguage } from '../../../constants';
 import { GitTagsDatasource } from '../../datasource/git-tags';
 import { PypiDatasource } from '../../datasource/pypi';
 
 export { updateArtifacts } from './artifacts';
 export { extractPackageFile } from './extract';
 
-export const language = ProgrammingLanguage.Python;
+export const language: ProgrammingLanguage = 'python';
 
 export const defaultConfig = {
   fileMatch: ['(^|/)([\\w-]*)requirements\\.(txt|pip)$'],
diff --git a/lib/modules/manager/pip_setup/index.ts b/lib/modules/manager/pip_setup/index.ts
index 261eced13d..0e3a926f9c 100644
--- a/lib/modules/manager/pip_setup/index.ts
+++ b/lib/modules/manager/pip_setup/index.ts
@@ -1,9 +1,9 @@
-import { ProgrammingLanguage } from '../../../constants';
+import type { ProgrammingLanguage } from '../../../constants';
 import { PypiDatasource } from '../../datasource/pypi';
 
 export { extractPackageFile } from './extract';
 
-export const language = ProgrammingLanguage.Python;
+export const language: ProgrammingLanguage = 'python';
 
 export const defaultConfig = {
   fileMatch: ['(^|/)setup\\.py$'],
diff --git a/lib/modules/manager/pipenv/index.ts b/lib/modules/manager/pipenv/index.ts
index 3d9c1ff8d9..857579477d 100644
--- a/lib/modules/manager/pipenv/index.ts
+++ b/lib/modules/manager/pipenv/index.ts
@@ -1,10 +1,10 @@
-import { ProgrammingLanguage } from '../../../constants';
+import type { ProgrammingLanguage } from '../../../constants';
 import { PypiDatasource } from '../../datasource/pypi';
 
 export { extractPackageFile } from './extract';
 export { updateArtifacts } from './artifacts';
 
-export const language = ProgrammingLanguage.Python;
+export const language: ProgrammingLanguage = 'python';
 export const supportsLockFileMaintenance = true;
 
 export const supportedDatasources = [PypiDatasource.id];
diff --git a/lib/modules/manager/poetry/index.ts b/lib/modules/manager/poetry/index.ts
index 5b607d8d9d..122ebb1d37 100644
--- a/lib/modules/manager/poetry/index.ts
+++ b/lib/modules/manager/poetry/index.ts
@@ -1,4 +1,4 @@
-import { ProgrammingLanguage } from '../../../constants';
+import type { ProgrammingLanguage } from '../../../constants';
 import { PypiDatasource } from '../../datasource/pypi';
 
 export { extractPackageFile } from './extract';
@@ -7,7 +7,7 @@ export { updateLockedDependency } from './update-locked';
 
 export const supportedDatasources = [PypiDatasource.id];
 
-export const language = ProgrammingLanguage.Python;
+export const language: ProgrammingLanguage = 'python';
 export const supportsLockFileMaintenance = true;
 
 export const defaultConfig = {
diff --git a/lib/modules/manager/puppet/index.ts b/lib/modules/manager/puppet/index.ts
index 3340bbcb2f..8743d2d408 100644
--- a/lib/modules/manager/puppet/index.ts
+++ b/lib/modules/manager/puppet/index.ts
@@ -1,11 +1,11 @@
-import { ProgrammingLanguage } from '../../../constants';
+import type { ProgrammingLanguage } from '../../../constants';
 import { GitTagsDatasource } from '../../datasource/git-tags';
 import { GithubTagsDatasource } from '../../datasource/github-tags';
 import { PuppetForgeDatasource } from '../../datasource/puppet-forge';
 
 export { extractPackageFile } from './extract';
 
-export const language = ProgrammingLanguage.Ruby;
+export const language: ProgrammingLanguage = 'ruby';
 
 export const defaultConfig = {
   fileMatch: ['(^|\\/)Puppetfile$'],
diff --git a/lib/modules/manager/pyenv/index.ts b/lib/modules/manager/pyenv/index.ts
index e235d49349..59d75f11cd 100644
--- a/lib/modules/manager/pyenv/index.ts
+++ b/lib/modules/manager/pyenv/index.ts
@@ -1,10 +1,10 @@
-import { ProgrammingLanguage } from '../../../constants';
+import type { ProgrammingLanguage } from '../../../constants';
 import { DockerDatasource } from '../../datasource/docker';
 import * as dockerVersioning from '../../versioning/docker';
 
 export { extractPackageFile } from './extract';
 
-export const language = ProgrammingLanguage.Python;
+export const language: ProgrammingLanguage = 'python';
 
 export const supportedDatasources = [DockerDatasource.id];
 
diff --git a/lib/modules/manager/ruby-version/index.ts b/lib/modules/manager/ruby-version/index.ts
index 4f339bfcee..68eaee26ae 100644
--- a/lib/modules/manager/ruby-version/index.ts
+++ b/lib/modules/manager/ruby-version/index.ts
@@ -1,4 +1,4 @@
-import { ProgrammingLanguage } from '../../../constants';
+import type { ProgrammingLanguage } from '../../../constants';
 import { RubyVersionDatasource } from '../../datasource/ruby-version';
 import * as rubyVersioning from '../../versioning/ruby';
 
@@ -6,7 +6,7 @@ export { extractPackageFile } from './extract';
 
 export const supportedDatasources = [RubyVersionDatasource.id];
 
-export const language = ProgrammingLanguage.Ruby;
+export const language: ProgrammingLanguage = 'ruby';
 
 export const defaultConfig = {
   fileMatch: ['(^|/)\\.ruby-version$'],
diff --git a/lib/modules/manager/setup-cfg/index.ts b/lib/modules/manager/setup-cfg/index.ts
index d3143e2041..c8b40c2a0c 100644
--- a/lib/modules/manager/setup-cfg/index.ts
+++ b/lib/modules/manager/setup-cfg/index.ts
@@ -1,4 +1,4 @@
-import { ProgrammingLanguage } from '../../../constants';
+import type { ProgrammingLanguage } from '../../../constants';
 import { PypiDatasource } from '../../datasource/pypi';
 import { id as versioning } from '../../versioning/pep440';
 
@@ -6,7 +6,7 @@ export { extractPackageFile } from './extract';
 
 export const supportedDatasources = [PypiDatasource.id];
 
-export const language = ProgrammingLanguage.Python;
+export const language: ProgrammingLanguage = 'python';
 
 export const defaultConfig = {
   fileMatch: ['(^|/)setup\\.cfg$'],
diff --git a/lib/modules/manager/travis/index.ts b/lib/modules/manager/travis/index.ts
index 4a03418b5d..baa3937b54 100644
--- a/lib/modules/manager/travis/index.ts
+++ b/lib/modules/manager/travis/index.ts
@@ -1,10 +1,10 @@
-import { ProgrammingLanguage } from '../../../constants';
+import type { ProgrammingLanguage } from '../../../constants';
 import { GithubTagsDatasource } from '../../datasource/github-tags';
 import * as nodeVersioning from '../../versioning/node';
 
 export { extractPackageFile } from './extract';
 
-export const language = ProgrammingLanguage.NodeJS;
+export const language: ProgrammingLanguage = 'node';
 
 export const supportedDatasources = [GithubTagsDatasource.id];
 
diff --git a/lib/modules/manager/woodpecker/index.ts b/lib/modules/manager/woodpecker/index.ts
index 12b959e5de..fc9d97bb66 100644
--- a/lib/modules/manager/woodpecker/index.ts
+++ b/lib/modules/manager/woodpecker/index.ts
@@ -1,8 +1,8 @@
-import { ProgrammingLanguage } from '../../../constants';
+import type { ProgrammingLanguage } from '../../../constants';
 import { DockerDatasource } from '../../datasource/docker';
 import { extractPackageFile } from './extract';
 
-export const language = ProgrammingLanguage.Docker;
+export const language: ProgrammingLanguage = 'docker';
 
 export { extractPackageFile };
 
diff --git a/lib/util/package-rules/index.spec.ts b/lib/util/package-rules/index.spec.ts
index 4bb0f75b61..7751d07369 100644
--- a/lib/util/package-rules/index.spec.ts
+++ b/lib/util/package-rules/index.spec.ts
@@ -1,6 +1,4 @@
 import type { PackageRuleInputConfig, UpdateType } from '../../config/types';
-import { ProgrammingLanguage } from '../../constants';
-
 import { DockerDatasource } from '../../modules/datasource/docker';
 import { OrbDatasource } from '../../modules/datasource/orb';
 import { applyPackageRules } from './index';
@@ -295,7 +293,7 @@ describe('util/package-rules/index', () => {
     };
     const dep = {
       depType: 'dependencies',
-      language: ProgrammingLanguage.JavaScript,
+      language: 'js',
       manager: 'meteor',
       depName: 'node',
     };
@@ -315,7 +313,7 @@ describe('util/package-rules/index', () => {
     };
     const dep = {
       depType: 'dependencies',
-      language: ProgrammingLanguage.Python,
+      language: 'python',
       manager: 'pipenv',
       depName: 'node',
     };
@@ -327,10 +325,7 @@ describe('util/package-rules/index', () => {
     const config: TestConfig = {
       packageRules: [
         {
-          matchLanguages: [
-            ProgrammingLanguage.JavaScript,
-            ProgrammingLanguage.NodeJS,
-          ],
+          matchLanguages: ['js', 'node'],
           matchPackageNames: ['node'],
           x: 1,
         },
@@ -338,7 +333,7 @@ describe('util/package-rules/index', () => {
     };
     const dep = {
       depType: 'dependencies',
-      language: ProgrammingLanguage.JavaScript,
+      language: 'js',
       manager: 'meteor',
       depName: 'node',
     };
@@ -350,7 +345,7 @@ describe('util/package-rules/index', () => {
     const config: TestConfig = {
       packageRules: [
         {
-          matchLanguages: [ProgrammingLanguage.Docker],
+          matchLanguages: ['docker'],
           matchPackageNames: ['node'],
           x: 1,
         },
@@ -358,7 +353,7 @@ describe('util/package-rules/index', () => {
     };
     const dep = {
       depType: 'dependencies',
-      language: ProgrammingLanguage.Python,
+      language: 'python',
       manager: 'pipenv',
       depName: 'node',
     };
diff --git a/lib/workers/repository/updates/flatten.spec.ts b/lib/workers/repository/updates/flatten.spec.ts
index c3f987abaf..7e3c2656b0 100644
--- a/lib/workers/repository/updates/flatten.spec.ts
+++ b/lib/workers/repository/updates/flatten.spec.ts
@@ -1,6 +1,4 @@
 import { RenovateConfig, getConfig } from '../../../../test/util';
-
-import { ProgrammingLanguage } from '../../../constants';
 import { flattenUpdates } from './flatten';
 
 let config: RenovateConfig;
@@ -100,7 +98,7 @@ describe('workers/repository/updates/flatten', () => {
             deps: [
               {
                 depName: 'amd64/node',
-                language: ProgrammingLanguage.Docker,
+                language: 'docker',
                 sourceUrl: 'https://github.com/nodejs/node',
                 updates: [{ newValue: '10.0.1' }],
               },
@@ -111,7 +109,7 @@ describe('workers/repository/updates/flatten', () => {
             deps: [
               {
                 depName: 'calico/node',
-                language: ProgrammingLanguage.Docker,
+                language: 'docker',
                 sourceUrl: 'https://calico.com',
                 updates: [{ newValue: '3.2.0', updateType: 'minor' }],
               },
-- 
GitLab