From b38df44b1861e52d746c206ca6d5609bbf95ca7f Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Mon, 30 Apr 2018 07:16:34 +0200
Subject: [PATCH] refactor: rename parentManager -> language (#1890)

Closes #1888
---
 docs/adding-a-package-manager.md              |  6 +--
 lib/manager/circleci/index.js                 |  4 +-
 lib/manager/docker-compose/index.js           |  4 +-
 lib/manager/index.js                          | 17 ++++----
 lib/manager/nvm/index.js                      |  4 +-
 lib/manager/pip_requirements/index.js         |  4 +-
 lib/manager/travis/index.js                   |  4 +-
 test/manager/index.spec.js                    |  2 +-
 .../2017-10-05-configuration-options.md       | 40 +++++++++----------
 9 files changed, 41 insertions(+), 44 deletions(-)

diff --git a/docs/adding-a-package-manager.md b/docs/adding-a-package-manager.md
index d7c6a56375..41048820af 100644
--- a/docs/adding-a-package-manager.md
+++ b/docs/adding-a-package-manager.md
@@ -24,15 +24,15 @@ module.exports = {
   extractDependencies,
   filePattern,
   getPackageUpdates,
-  parentManager,
+  language,
   resolvePackageFile,
   updateDependency,
 };
 ```
 
-##### parentManager (optional)
+##### language (optional)
 
-This is used when more than one package manager share common characteristics. e.g. docker-compose, circleci and gitlabci all specify "docker" as their parent manager and inherit all config settings from there.
+This is used when more than one package manager share settings from a common language. e.g. docker-compose, circleci and gitlabci all specify "docker" as their language and inherit all config settings from there.
 
 ##### filePattern
 
diff --git a/lib/manager/circleci/index.js b/lib/manager/circleci/index.js
index 068d2f113c..2b674babc7 100644
--- a/lib/manager/circleci/index.js
+++ b/lib/manager/circleci/index.js
@@ -4,13 +4,13 @@ const { updateDependency } = require('./update');
 
 const filePattern = new RegExp('^.circleci/config.yml$');
 const contentPattern = new RegExp('(^|\\n)\\s*- image: ');
-const parentManager = 'docker';
+const language = 'docker';
 
 module.exports = {
   contentPattern,
   extractDependencies,
   filePattern,
   getPackageUpdates,
-  parentManager,
+  language,
   updateDependency,
 };
diff --git a/lib/manager/docker-compose/index.js b/lib/manager/docker-compose/index.js
index 3f5ed7f32a..0618fe466e 100644
--- a/lib/manager/docker-compose/index.js
+++ b/lib/manager/docker-compose/index.js
@@ -5,14 +5,14 @@ const { updateDependency } = require('./update');
 
 const filePattern = new RegExp('(^|/)docker-compose[^/]*\\.ya?ml$');
 const contentPattern = new RegExp('(^|\\n)\\s*image:');
-const parentManager = 'docker';
+const language = 'docker';
 
 module.exports = {
   contentPattern,
   extractDependencies,
   filePattern,
   getPackageUpdates,
-  parentManager,
+  language,
   resolvePackageFile,
   updateDependency,
 };
diff --git a/lib/manager/index.js b/lib/manager/index.js
index ef1a9e19bf..295aa70b19 100644
--- a/lib/manager/index.js
+++ b/lib/manager/index.js
@@ -41,14 +41,14 @@ async function detectPackageFiles(config) {
   );
   for (const manager of managerList) {
     logger.debug(`Detecting package files (${manager})`);
-    const { parentManager } = managers[manager];
+    const { language } = managers[manager];
     // Check if the user has a whitelist of managers
     if (
       config.enabledManagers &&
       config.enabledManagers.length &&
       !(
         config.enabledManagers.includes(manager) ||
-        config.enabledManagers.includes(parentManager)
+        config.enabledManagers.includes(language)
       )
     ) {
       logger.debug(manager + ' is not on the enabledManagers list');
@@ -60,8 +60,8 @@ async function detectPackageFiles(config) {
       continue; // eslint-disable-line no-continue
     }
     // Check if the parent is manually disabled
-    if (parentManager && config[parentManager].enabled === false) {
-      logger.debug(manager + ' parentManager is disabled');
+    if (language && config[language].enabled === false) {
+      logger.debug(manager + ' language is disabled');
       continue; // eslint-disable-line no-continue
     }
     const files = [];
@@ -194,12 +194,9 @@ async function resolvePackageFiles(config) {
     if (managers[manager].resolvePackageFile) {
       return managers[manager].resolvePackageFile(config, packageFile);
     }
-    const { parentManager } = managers[manager];
-    const parentManagerConfig = parentManager ? config[parentManager] : {};
-    const managerConfig = mergeChildConfig(
-      parentManagerConfig,
-      config[manager]
-    );
+    const { language } = managers[manager];
+    const languageConfig = language ? config[language] : {};
+    const managerConfig = mergeChildConfig(languageConfig, config[manager]);
     packageFile = mergeChildConfig(managerConfig, packageFile);
     logger.debug(
       `Resolving packageFile ${JSON.stringify(packageFile.packageFile)}`
diff --git a/lib/manager/nvm/index.js b/lib/manager/nvm/index.js
index 57f3860c91..abcd005bc5 100644
--- a/lib/manager/nvm/index.js
+++ b/lib/manager/nvm/index.js
@@ -3,12 +3,12 @@ const { getPackageUpdates } = require('./package');
 const { updateDependency } = require('./update');
 
 const filePattern = new RegExp('^.nvmrc$');
-const parentManager = 'node';
+const language = 'node';
 
 module.exports = {
   extractDependencies,
   filePattern,
   getPackageUpdates,
-  parentManager,
+  language,
   updateDependency,
 };
diff --git a/lib/manager/pip_requirements/index.js b/lib/manager/pip_requirements/index.js
index a405b6d489..96ffb634fa 100644
--- a/lib/manager/pip_requirements/index.js
+++ b/lib/manager/pip_requirements/index.js
@@ -4,13 +4,13 @@ const { updateDependency } = require('./update');
 
 const filePattern = /(^|\/)([\w-]*)requirements.(txt|pip)$/;
 const contentPattern = new RegExp(`^${packagePattern}==`);
-const parentManager = 'python';
+const language = 'python';
 
 module.exports = {
   contentPattern,
   extractDependencies,
   filePattern,
   getPackageUpdates,
-  parentManager,
+  language,
   updateDependency,
 };
diff --git a/lib/manager/travis/index.js b/lib/manager/travis/index.js
index 4feb1b8da0..4752f04cc8 100644
--- a/lib/manager/travis/index.js
+++ b/lib/manager/travis/index.js
@@ -4,13 +4,13 @@ const { updateDependency } = require('./update');
 
 const filePattern = new RegExp('^.travis.yml$');
 const contentPattern = new RegExp('(^|\\n)node_js:\\n');
-const parentManager = 'node';
+const language = 'node';
 
 module.exports = {
   contentPattern,
   extractDependencies,
   filePattern,
   getPackageUpdates,
-  parentManager,
+  language,
   updateDependency,
 };
diff --git a/test/manager/index.spec.js b/test/manager/index.spec.js
index d4fff3a8e1..7c6edbe566 100644
--- a/test/manager/index.spec.js
+++ b/test/manager/index.spec.js
@@ -29,7 +29,7 @@ describe('manager', () => {
       const res = await manager.detectPackageFiles(config);
       expect(res).toHaveLength(0);
     });
-    it('skips if parentManager is disabled', async () => {
+    it('skips if language is disabled', async () => {
       platform.getFileList.mockReturnValueOnce([
         'package.json',
         '.circleci/config.yml',
diff --git a/website/docs/_posts/2017-10-05-configuration-options.md b/website/docs/_posts/2017-10-05-configuration-options.md
index 8131783615..dfaac12bad 100644
--- a/website/docs/_posts/2017-10-05-configuration-options.md
+++ b/website/docs/_posts/2017-10-05-configuration-options.md
@@ -172,11 +172,11 @@ Set this value to 'patch', 'minor' or 'major' to have Renovate update the versio
 
 Configuration object for CircleCI yaml file renovation. Also inherits settings from `docker` object.
 
-| name          | value  |
-| ------------- | ------ |
-| type          | object |
-| default       | {}     |
-| parentManager | docker |
+| name     | value  |
+| -------- | ------ |
+| type     | object |
+| default  | {}     |
+| language | docker |
 
 ## commitBody
 
@@ -327,11 +327,11 @@ Configuration specific for Dockerfile updates.
 
 Configuration object for Docker Compose yaml file renovation. Also inherits settings from `docker` object.
 
-| name          | value  |
-| ------------- | ------ |
-| type          | object |
-| default       | {}     |
-| parentManager | docker |
+| name     | value  |
+| -------- | ------ |
+| type     | object |
+| default  | {}     |
+| language | docker |
 
 ## enabled
 
@@ -716,11 +716,11 @@ See https://renovateapp.com/docs/deep-dives/private-modules for details on how t
 
 Configuration specific for `.nvmrc` files.
 
-| name          | value  |
-| ------------- | ------ |
-| type          | object |
-| default       | { }    |
-| parentManager | node   |
+| name     | value  |
+| -------- | ------ |
+| type     | object |
+| default  | { }    |
+| language | node   |
 
 For settings common to all node.js version updates (e.g. travis, nvm, etc) you can use the `node` object instead.
 
@@ -1221,11 +1221,11 @@ It is only recommended to set this field if you wish to use the `schedules` feat
 
 Configuration specific for `.travis.yml` files.
 
-| name          | value              |
-| ------------- | ------------------ |
-| type          | object             |
-| default       | { enabled: false } |
-| parentManager | node               |
+| name     | value              |
+| -------- | ------------------ |
+| type     | object             |
+| default  | { enabled: false } |
+| language | node               |
 
 For settings common to all node.js version updates (e.g. travis, nvm, etc) you can use the `node` object instead.
 
-- 
GitLab