From 6dc76f2e46a87338d2dfde59611f858b98bef918 Mon Sep 17 00:00:00 2001
From: Sourav Das <souravdasslg95@gmail.com>
Date: Fri, 17 Jan 2020 14:44:20 +0530
Subject: [PATCH] feat(constants): Language list constants (#5167)

1. All languages are moved to constants/languages.ts
2. Updated all the references
---
 lib/constants/languages.ts                    | 12 +++++++
 lib/manager/ansible/index.ts                  |  3 +-
 lib/manager/bundler/index.ts                  |  3 +-
 lib/manager/cargo/index.ts                    |  3 +-
 lib/manager/circleci/index.ts                 |  3 +-
 lib/manager/composer/index.ts                 |  3 +-
 lib/manager/docker-compose/index.ts           |  3 +-
 lib/manager/dockerfile/index.ts               |  3 +-
 lib/manager/droneci/index.ts                  |  3 +-
 lib/manager/github-actions/index.ts           |  3 +-
 lib/manager/gitlabci/index.ts                 |  3 +-
 lib/manager/gomod/index.ts                    |  3 +-
 lib/manager/gradle/index.ts                   |  3 +-
 lib/manager/index.ts                          | 35 +++++++++++++------
 lib/manager/kubernetes/index.ts               |  4 ++-
 lib/manager/maven/index.ts                    |  4 ++-
 lib/manager/meteor/index.ts                   |  4 ++-
 lib/manager/mix/index.ts                      |  4 ++-
 lib/manager/npm/index.ts                      |  4 ++-
 lib/manager/nuget/index.ts                    |  4 ++-
 lib/manager/nvm/index.ts                      |  4 ++-
 lib/manager/pip_requirements/index.ts         |  4 ++-
 lib/manager/pip_setup/index.ts                |  4 ++-
 lib/manager/pipenv/index.ts                   |  4 ++-
 lib/manager/poetry/index.ts                   |  4 ++-
 lib/manager/ruby-version/index.ts             |  4 ++-
 lib/manager/travis/index.ts                   |  4 ++-
 lib/workers/repository/updates/flatten.ts     |  3 +-
 test/util/package-rules.spec.ts               | 18 ++++++----
 .../repository/updates/flatten.spec.ts        |  5 +--
 30 files changed, 116 insertions(+), 45 deletions(-)
 create mode 100644 lib/constants/languages.ts

diff --git a/lib/constants/languages.ts b/lib/constants/languages.ts
new file mode 100644
index 0000000000..88999d4554
--- /dev/null
+++ b/lib/constants/languages.ts
@@ -0,0 +1,12 @@
+export const LANGUAGE_DART = 'dart';
+export const LANGUAGE_DOCKER = 'docker';
+export const LANGUAGE_DOT_NET = 'dotnet';
+export const LANGUAGE_ELIXIR = 'elixir';
+export const LANGUAGE_GOLANG = 'golang';
+export const LANGUAGE_JAVA = 'java';
+export const LANGUAGE_JAVASCRIPT = 'js';
+export const LANGUAGE_NODE = 'node';
+export const LANGUAGE_PHP = 'php';
+export const LANGUAGE_PYTHON = 'python';
+export const LANGUAGE_RUBY = 'ruby';
+export const LANGUAGE_RUST = 'rust';
diff --git a/lib/manager/ansible/index.ts b/lib/manager/ansible/index.ts
index 595304a1ea..f7021b8eda 100644
--- a/lib/manager/ansible/index.ts
+++ b/lib/manager/ansible/index.ts
@@ -1,6 +1,7 @@
 import extractPackageFile from './extract';
 import updateDependency from './update';
+import { LANGUAGE_DOCKER } from '../../constants/languages';
 
-const language = 'docker';
+const language = LANGUAGE_DOCKER;
 
 export { extractPackageFile, language, updateDependency };
diff --git a/lib/manager/bundler/index.ts b/lib/manager/bundler/index.ts
index 3cff436f74..626d12621a 100644
--- a/lib/manager/bundler/index.ts
+++ b/lib/manager/bundler/index.ts
@@ -2,8 +2,9 @@ import { extractPackageFile } from './extract';
 import { updateDependency } from './update';
 import { updateArtifacts } from './artifacts';
 import { getRangeStrategy } from './range';
+import { LANGUAGE_RUBY } from '../../constants/languages';
 
-const language = 'ruby';
+const language = LANGUAGE_RUBY;
 
 /*
  * Each of the below functions contain some explanations within their own files.
diff --git a/lib/manager/cargo/index.ts b/lib/manager/cargo/index.ts
index b3e0f380d2..0fed878b98 100644
--- a/lib/manager/cargo/index.ts
+++ b/lib/manager/cargo/index.ts
@@ -1,8 +1,9 @@
 import { extractPackageFile } from './extract';
 import { updateDependency } from './update';
 import { updateArtifacts } from './artifacts';
+import { LANGUAGE_RUST } from '../../constants/languages';
 
-const language = 'rust';
+const language = LANGUAGE_RUST;
 // TODO: Support this
 export const supportsLockFileMaintenance = false;
 
diff --git a/lib/manager/circleci/index.ts b/lib/manager/circleci/index.ts
index 5705105fe4..fd8a85a4bc 100644
--- a/lib/manager/circleci/index.ts
+++ b/lib/manager/circleci/index.ts
@@ -1,6 +1,7 @@
 import { extractPackageFile } from './extract';
 import { updateDependency } from './update';
+import { LANGUAGE_DOCKER } from '../../constants/languages';
 
-const language = 'docker';
+const language = LANGUAGE_DOCKER;
 
 export { extractPackageFile, language, updateDependency };
diff --git a/lib/manager/composer/index.ts b/lib/manager/composer/index.ts
index 7bd3bf71b4..4da24f5413 100644
--- a/lib/manager/composer/index.ts
+++ b/lib/manager/composer/index.ts
@@ -2,8 +2,9 @@ import { extractPackageFile } from './extract';
 import { updateDependency } from '../npm/update';
 import { updateArtifacts } from './artifacts';
 import { getRangeStrategy } from './range';
+import { LANGUAGE_PHP } from '../../constants/languages';
 
-const language = 'php';
+const language = LANGUAGE_PHP;
 export const supportsLockFileMaintenance = true;
 
 export {
diff --git a/lib/manager/docker-compose/index.ts b/lib/manager/docker-compose/index.ts
index 5705105fe4..fd8a85a4bc 100644
--- a/lib/manager/docker-compose/index.ts
+++ b/lib/manager/docker-compose/index.ts
@@ -1,6 +1,7 @@
 import { extractPackageFile } from './extract';
 import { updateDependency } from './update';
+import { LANGUAGE_DOCKER } from '../../constants/languages';
 
-const language = 'docker';
+const language = LANGUAGE_DOCKER;
 
 export { extractPackageFile, language, updateDependency };
diff --git a/lib/manager/dockerfile/index.ts b/lib/manager/dockerfile/index.ts
index 5705105fe4..fd8a85a4bc 100644
--- a/lib/manager/dockerfile/index.ts
+++ b/lib/manager/dockerfile/index.ts
@@ -1,6 +1,7 @@
 import { extractPackageFile } from './extract';
 import { updateDependency } from './update';
+import { LANGUAGE_DOCKER } from '../../constants/languages';
 
-const language = 'docker';
+const language = LANGUAGE_DOCKER;
 
 export { extractPackageFile, language, updateDependency };
diff --git a/lib/manager/droneci/index.ts b/lib/manager/droneci/index.ts
index 5705105fe4..fd8a85a4bc 100644
--- a/lib/manager/droneci/index.ts
+++ b/lib/manager/droneci/index.ts
@@ -1,6 +1,7 @@
 import { extractPackageFile } from './extract';
 import { updateDependency } from './update';
+import { LANGUAGE_DOCKER } from '../../constants/languages';
 
-const language = 'docker';
+const language = LANGUAGE_DOCKER;
 
 export { extractPackageFile, language, updateDependency };
diff --git a/lib/manager/github-actions/index.ts b/lib/manager/github-actions/index.ts
index 5705105fe4..fd8a85a4bc 100644
--- a/lib/manager/github-actions/index.ts
+++ b/lib/manager/github-actions/index.ts
@@ -1,6 +1,7 @@
 import { extractPackageFile } from './extract';
 import { updateDependency } from './update';
+import { LANGUAGE_DOCKER } from '../../constants/languages';
 
-const language = 'docker';
+const language = LANGUAGE_DOCKER;
 
 export { extractPackageFile, language, updateDependency };
diff --git a/lib/manager/gitlabci/index.ts b/lib/manager/gitlabci/index.ts
index 5705105fe4..fd8a85a4bc 100644
--- a/lib/manager/gitlabci/index.ts
+++ b/lib/manager/gitlabci/index.ts
@@ -1,6 +1,7 @@
 import { extractPackageFile } from './extract';
 import { updateDependency } from './update';
+import { LANGUAGE_DOCKER } from '../../constants/languages';
 
-const language = 'docker';
+const language = LANGUAGE_DOCKER;
 
 export { extractPackageFile, language, updateDependency };
diff --git a/lib/manager/gomod/index.ts b/lib/manager/gomod/index.ts
index 6636c89068..0c057325c2 100644
--- a/lib/manager/gomod/index.ts
+++ b/lib/manager/gomod/index.ts
@@ -1,6 +1,7 @@
 import { extractPackageFile } from './extract';
 import { updateDependency } from './update';
 import { updateArtifacts } from './artifacts';
+import { LANGUAGE_GOLANG } from '../../constants/languages';
 
-export const language = 'golang';
+export const language = LANGUAGE_GOLANG;
 export { extractPackageFile, updateDependency, updateArtifacts };
diff --git a/lib/manager/gradle/index.ts b/lib/manager/gradle/index.ts
index e9a4d3ea26..b6acbf5862 100644
--- a/lib/manager/gradle/index.ts
+++ b/lib/manager/gradle/index.ts
@@ -17,6 +17,7 @@ import {
 } from './gradle-updates-report';
 import { PackageFile, ExtractConfig, Upgrade } from '../common';
 import { platform } from '../../platform';
+import { LANGUAGE_JAVA } from '../../constants/languages';
 import { MANAGER_GRADLE } from '../../constants/managers';
 import {
   BINARY_SOURCE_DOCKER,
@@ -178,4 +179,4 @@ export function updateDependency(
   );
 }
 
-export const language = 'java';
+export const language = LANGUAGE_JAVA;
diff --git a/lib/manager/index.ts b/lib/manager/index.ts
index f32ed44a28..a1d874a775 100644
--- a/lib/manager/index.ts
+++ b/lib/manager/index.ts
@@ -8,6 +8,19 @@ import {
   PackageUpdateResult,
 } from './common';
 import { RangeStrategy } from '../versioning';
+import {
+  LANGUAGE_DART,
+  LANGUAGE_DOCKER,
+  LANGUAGE_DOT_NET,
+  LANGUAGE_ELIXIR,
+  LANGUAGE_GOLANG,
+  LANGUAGE_JAVASCRIPT,
+  LANGUAGE_NODE,
+  LANGUAGE_PHP,
+  LANGUAGE_PYTHON,
+  LANGUAGE_RUBY,
+  LANGUAGE_RUST,
+} from '../constants/languages';
 import {
   MANAGER_ANSIBLE,
   MANAGER_BAZEL,
@@ -96,17 +109,17 @@ for (const manager of managerList) {
 }
 
 const languageList = [
-  'dart',
-  'docker',
-  'dotnet',
-  'elixir',
-  'golang',
-  'js',
-  'node',
-  'php',
-  'python',
-  'ruby',
-  'rust',
+  LANGUAGE_DART,
+  LANGUAGE_DOCKER,
+  LANGUAGE_DOT_NET,
+  LANGUAGE_ELIXIR,
+  LANGUAGE_GOLANG,
+  LANGUAGE_JAVASCRIPT,
+  LANGUAGE_NODE,
+  LANGUAGE_PHP,
+  LANGUAGE_PYTHON,
+  LANGUAGE_RUBY,
+  LANGUAGE_RUST,
 ];
 
 export const get = <T extends keyof ManagerApi>(
diff --git a/lib/manager/kubernetes/index.ts b/lib/manager/kubernetes/index.ts
index c356e13fd8..2fa3dba3b3 100644
--- a/lib/manager/kubernetes/index.ts
+++ b/lib/manager/kubernetes/index.ts
@@ -1,4 +1,6 @@
+import { LANGUAGE_DOCKER } from '../../constants/languages';
+
 export { extractPackageFile } from './extract';
 export { updateDependency } from './update';
 
-export const language = 'docker';
+export const language = LANGUAGE_DOCKER;
diff --git a/lib/manager/maven/index.ts b/lib/manager/maven/index.ts
index 683d30f630..f66ffe8b6f 100644
--- a/lib/manager/maven/index.ts
+++ b/lib/manager/maven/index.ts
@@ -1,4 +1,6 @@
+import { LANGUAGE_JAVA } from '../../constants/languages';
+
 export { extractAllPackageFiles } from './extract';
 export { updateDependency } from './update';
 
-export const language = 'java';
+export const language = LANGUAGE_JAVA;
diff --git a/lib/manager/meteor/index.ts b/lib/manager/meteor/index.ts
index 8704d70aec..d98321add2 100644
--- a/lib/manager/meteor/index.ts
+++ b/lib/manager/meteor/index.ts
@@ -1,4 +1,6 @@
+import { LANGUAGE_JAVASCRIPT } from '../../constants/languages';
+
 export { extractPackageFile } from './extract';
 export { updateDependency } from './update';
 
-export const language = 'js';
+export const language = LANGUAGE_JAVASCRIPT;
diff --git a/lib/manager/mix/index.ts b/lib/manager/mix/index.ts
index ed11a06c48..74daad6307 100644
--- a/lib/manager/mix/index.ts
+++ b/lib/manager/mix/index.ts
@@ -1,5 +1,7 @@
+import { LANGUAGE_ELIXIR } from '../../constants/languages';
+
 export { extractPackageFile } from './extract';
 export { updateDependency } from './update';
 export { updateArtifacts } from './artifacts';
 
-export const language = 'elixir';
+export const language = LANGUAGE_ELIXIR;
diff --git a/lib/manager/npm/index.ts b/lib/manager/npm/index.ts
index 77f6c1cec3..4a720f6ace 100644
--- a/lib/manager/npm/index.ts
+++ b/lib/manager/npm/index.ts
@@ -1,6 +1,8 @@
+import { LANGUAGE_JAVASCRIPT } from '../../constants/languages';
+
 export { extractAllPackageFiles } from './extract';
 export { updateDependency } from './update';
 export { getRangeStrategy } from './range';
 
-export const language = 'js';
+export const language = LANGUAGE_JAVASCRIPT;
 export const supportsLockFileMaintenance = true;
diff --git a/lib/manager/nuget/index.ts b/lib/manager/nuget/index.ts
index 721267a6f9..2247443f31 100644
--- a/lib/manager/nuget/index.ts
+++ b/lib/manager/nuget/index.ts
@@ -1,4 +1,6 @@
+import { LANGUAGE_DOT_NET } from '../../constants/languages';
+
 export { extractPackageFile } from './extract';
 export { updateDependency } from './update';
 
-export const language = 'dotnet';
+export const language = LANGUAGE_DOT_NET;
diff --git a/lib/manager/nvm/index.ts b/lib/manager/nvm/index.ts
index e5ce4fd8d1..5a1a44228c 100644
--- a/lib/manager/nvm/index.ts
+++ b/lib/manager/nvm/index.ts
@@ -1,4 +1,6 @@
+import { LANGUAGE_NODE } from '../../constants/languages';
+
 export { extractPackageFile } from './extract';
 export { updateDependency } from './update';
 
-export const language = 'node';
+export const language = LANGUAGE_NODE;
diff --git a/lib/manager/pip_requirements/index.ts b/lib/manager/pip_requirements/index.ts
index 4737e5fb37..e4f823e0cb 100644
--- a/lib/manager/pip_requirements/index.ts
+++ b/lib/manager/pip_requirements/index.ts
@@ -1,5 +1,7 @@
+import { LANGUAGE_PYTHON } from '../../constants/languages';
+
 export { extractPackageFile } from './extract';
 export { updateDependency } from './update';
 export { getRangeStrategy } from './range';
 
-export const language = 'python';
+export const language = LANGUAGE_PYTHON;
diff --git a/lib/manager/pip_setup/index.ts b/lib/manager/pip_setup/index.ts
index 816d4c0336..c7d178c520 100644
--- a/lib/manager/pip_setup/index.ts
+++ b/lib/manager/pip_setup/index.ts
@@ -1,4 +1,6 @@
+import { LANGUAGE_PYTHON } from '../../constants/languages';
+
 export { extractPackageFile } from './extract';
 export { updateDependency } from '../pip_requirements/update';
 
-export const language = 'python';
+export const language = LANGUAGE_PYTHON;
diff --git a/lib/manager/pipenv/index.ts b/lib/manager/pipenv/index.ts
index 29e3d697e2..0141fb6fcc 100644
--- a/lib/manager/pipenv/index.ts
+++ b/lib/manager/pipenv/index.ts
@@ -1,5 +1,7 @@
+import { LANGUAGE_PYTHON } from '../../constants/languages';
+
 export { extractPackageFile } from './extract';
 export { updateDependency } from './update';
 export { updateArtifacts } from './artifacts';
 
-export const language = 'python';
+export const language = LANGUAGE_PYTHON;
diff --git a/lib/manager/poetry/index.ts b/lib/manager/poetry/index.ts
index 62e8aafece..d5d3b9c9a8 100644
--- a/lib/manager/poetry/index.ts
+++ b/lib/manager/poetry/index.ts
@@ -1,6 +1,8 @@
+import { LANGUAGE_PYTHON } from '../../constants/languages';
+
 export { extractPackageFile } from './extract';
 export { updateDependency } from './update';
 export { updateArtifacts } from './artifacts';
 
-export const language = 'python';
+export const language = LANGUAGE_PYTHON;
 export const supportsLockFileMaintenance = false;
diff --git a/lib/manager/ruby-version/index.ts b/lib/manager/ruby-version/index.ts
index 3c09a2db01..8903806a38 100644
--- a/lib/manager/ruby-version/index.ts
+++ b/lib/manager/ruby-version/index.ts
@@ -1,4 +1,6 @@
+import { LANGUAGE_RUBY } from '../../constants/languages';
+
 export { extractPackageFile } from './extract';
 export { updateDependency } from './update';
 
-export const language = 'ruby';
+export const language = LANGUAGE_RUBY;
diff --git a/lib/manager/travis/index.ts b/lib/manager/travis/index.ts
index 91796056c6..1dd505999c 100644
--- a/lib/manager/travis/index.ts
+++ b/lib/manager/travis/index.ts
@@ -1,5 +1,7 @@
+import { LANGUAGE_NODE } from '../../constants/languages';
+
 export { extractPackageFile } from './extract';
 export { getPackageUpdates } from './package';
 export { updateDependency } from './update';
 
-export const language = 'node';
+export const language = LANGUAGE_NODE;
diff --git a/lib/workers/repository/updates/flatten.ts b/lib/workers/repository/updates/flatten.ts
index 83d12cbacf..10b96e1121 100644
--- a/lib/workers/repository/updates/flatten.ts
+++ b/lib/workers/repository/updates/flatten.ts
@@ -8,6 +8,7 @@ import {
 } from '../../../config';
 import { applyPackageRules } from '../../../util/package-rules';
 import { get } from '../../../manager';
+import { LANGUAGE_DOCKER } from '../../../constants/languages';
 
 // Return only rules that contain an updateType
 function getUpdateTypeRules(packageRules: PackageRule[]): PackageRule[] {
@@ -63,7 +64,7 @@ export function flattenUpdates(
                   .toLowerCase()
               : undefined;
             if (
-              updateConfig.language === 'docker' &&
+              updateConfig.language === LANGUAGE_DOCKER &&
               updateConfig.depName.match(/(^|\/)node$/) &&
               updateConfig.depName !== 'calico/node'
             ) {
diff --git a/test/util/package-rules.spec.ts b/test/util/package-rules.spec.ts
index 7dfea634b1..e12a562f28 100644
--- a/test/util/package-rules.spec.ts
+++ b/test/util/package-rules.spec.ts
@@ -1,5 +1,11 @@
 import { applyPackageRules, Config } from '../../lib/util/package-rules';
 import { UpdateType } from '../../lib/config';
+import {
+  LANGUAGE_DOCKER,
+  LANGUAGE_JAVASCRIPT,
+  LANGUAGE_NODE,
+  LANGUAGE_PYTHON,
+} from '../../lib/constants/languages';
 import {
   MANAGER_DOCKERFILE,
   MANAGER_METEOR,
@@ -195,7 +201,7 @@ describe('applyPackageRules()', () => {
     };
     const dep = {
       depType: 'dependencies',
-      language: 'js',
+      language: LANGUAGE_JAVASCRIPT,
       manager: MANAGER_METEOR,
       depName: 'node',
     };
@@ -214,7 +220,7 @@ describe('applyPackageRules()', () => {
     };
     const dep = {
       depType: 'dependencies',
-      language: 'python',
+      language: LANGUAGE_PYTHON,
       manager: MANAGER_PIPENV,
       depName: 'node',
     };
@@ -225,7 +231,7 @@ describe('applyPackageRules()', () => {
     const config: TestConfig = {
       packageRules: [
         {
-          languages: ['js', 'node'],
+          languages: [LANGUAGE_JAVASCRIPT, LANGUAGE_NODE],
           packageNames: ['node'],
           x: 1,
         },
@@ -233,7 +239,7 @@ describe('applyPackageRules()', () => {
     };
     const dep = {
       depType: 'dependencies',
-      language: 'js',
+      language: LANGUAGE_JAVASCRIPT,
       manager: MANAGER_METEOR,
       depName: 'node',
     };
@@ -244,7 +250,7 @@ describe('applyPackageRules()', () => {
     const config: TestConfig = {
       packageRules: [
         {
-          languages: ['docker'],
+          languages: [LANGUAGE_DOCKER],
           packageNames: ['node'],
           x: 1,
         },
@@ -252,7 +258,7 @@ describe('applyPackageRules()', () => {
     };
     const dep = {
       depType: 'dependencies',
-      language: 'python',
+      language: LANGUAGE_PYTHON,
       manager: MANAGER_PIPENV,
       depName: 'node',
     };
diff --git a/test/workers/repository/updates/flatten.spec.ts b/test/workers/repository/updates/flatten.spec.ts
index 8d8a66346e..e799e68564 100644
--- a/test/workers/repository/updates/flatten.spec.ts
+++ b/test/workers/repository/updates/flatten.spec.ts
@@ -1,6 +1,7 @@
 import { RenovateConfig, getConfig } from '../../../util';
 
 import { flattenUpdates } from '../../../../lib/workers/repository/updates/flatten';
+import { LANGUAGE_DOCKER } from '../../../../lib/constants/languages';
 
 let config: RenovateConfig;
 beforeEach(() => {
@@ -54,7 +55,7 @@ describe('workers/repository/updates/flatten', () => {
             deps: [
               {
                 depName: 'amd64/node',
-                language: 'docker',
+                language: LANGUAGE_DOCKER,
                 updates: [{ newValue: '10.0.1' }],
               },
             ],
@@ -64,7 +65,7 @@ describe('workers/repository/updates/flatten', () => {
             deps: [
               {
                 depName: 'calico/node',
-                language: 'docker',
+                language: LANGUAGE_DOCKER,
                 updates: [{ newValue: '3.2.0' }],
               },
             ],
-- 
GitLab