From ac7a5c4d93317e9c35274cb7af65ebeac1525a15 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Sat, 10 Apr 2021 06:23:11 +0200
Subject: [PATCH] feat: drop dockerMapDotFiles (#9417)

Drops support for dockerMapDotfiles

BREAKING CHANGE: dockerMapDotfiles is no longer supported
---
 docs/usage/self-hosted-configuration.md       | 11 ----
 lib/config/definitions.ts                     |  8 ---
 .../__snapshots__/lerna.spec.ts.snap          | 59 -------------------
 lib/manager/npm/post-update/lerna.spec.ts     | 16 +----
 lib/manager/npm/post-update/lerna.ts          |  7 ---
 lib/manager/npm/post-update/npm.spec.ts       |  3 +-
 lib/manager/npm/post-update/npm.ts            |  6 --
 lib/manager/npm/post-update/pnpm.spec.ts      |  1 -
 lib/manager/npm/post-update/pnpm.ts           |  6 --
 lib/manager/npm/post-update/yarn.spec.ts      |  2 -
 lib/manager/npm/post-update/yarn.ts           |  6 --
 11 files changed, 2 insertions(+), 123 deletions(-)

diff --git a/docs/usage/self-hosted-configuration.md b/docs/usage/self-hosted-configuration.md
index f3567222b3..58a81776bb 100644
--- a/docs/usage/self-hosted-configuration.md
+++ b/docs/usage/self-hosted-configuration.md
@@ -164,17 +164,6 @@ You would use put this in your configuration file:
 
 If you pulled a new `node` image, the final image would be `ghcr.io/renovatebot/node` instead of `docker.io/renovate/node`.
 
-## dockerMapDotfiles
-
-This is used if you want to map "dotfiles" from your host computer home directory to containers that Renovate creates, e.g. for updating lock files.
-Currently applicable to `.npmrc` only.
-
-```json
-{
-  "dockerMapDotfiles": true
-}
-```
-
 ## dockerUser
 
 Override default user and group used by Docker-based binaries.
diff --git a/lib/config/definitions.ts b/lib/config/definitions.ts
index bc45840351..54f8f9eb9a 100644
--- a/lib/config/definitions.ts
+++ b/lib/config/definitions.ts
@@ -254,14 +254,6 @@ const options: RenovateOptions[] = [
     type: 'object',
     default: false,
   },
-  {
-    name: 'dockerMapDotfiles',
-    description:
-      'Map relevant home directory dotfiles into containers when binarySource=docker.',
-    admin: true,
-    type: 'boolean',
-    default: false,
-  },
   {
     name: 'dockerChildPrefix',
     description:
diff --git a/lib/manager/npm/post-update/__snapshots__/lerna.spec.ts.snap b/lib/manager/npm/post-update/__snapshots__/lerna.spec.ts.snap
index e8f5d06c35..4dc615e847 100644
--- a/lib/manager/npm/post-update/__snapshots__/lerna.spec.ts.snap
+++ b/lib/manager/npm/post-update/__snapshots__/lerna.spec.ts.snap
@@ -236,65 +236,6 @@ Array [
 ]
 `;
 
-exports[`manager/npm/post-update/lerna generateLockFiles() maps dot files 1`] = `
-Array [
-  Object {
-    "cmd": "lerna info || echo \\"Ignoring lerna info failure\\"",
-    "options": Object {
-      "cwd": "some-dir",
-      "encoding": "utf-8",
-      "env": Object {
-        "HOME": "/home/user",
-        "HTTPS_PROXY": "https://example.com",
-        "HTTP_PROXY": "http://example.com",
-        "LANG": "en_US.UTF-8",
-        "LC_ALL": "en_US",
-        "NO_PROXY": "localhost",
-        "PATH": "/tmp/path",
-      },
-      "maxBuffer": 10485760,
-      "timeout": 900000,
-    },
-  },
-  Object {
-    "cmd": "npm install --ignore-scripts  --no-audit --package-lock-only",
-    "options": Object {
-      "cwd": "some-dir",
-      "encoding": "utf-8",
-      "env": Object {
-        "HOME": "/home/user",
-        "HTTPS_PROXY": "https://example.com",
-        "HTTP_PROXY": "http://example.com",
-        "LANG": "en_US.UTF-8",
-        "LC_ALL": "en_US",
-        "NO_PROXY": "localhost",
-        "PATH": "/tmp/path",
-      },
-      "maxBuffer": 10485760,
-      "timeout": 900000,
-    },
-  },
-  Object {
-    "cmd": "lerna bootstrap --no-ci --ignore-scripts -- --ignore-scripts  --no-audit --package-lock-only",
-    "options": Object {
-      "cwd": "some-dir",
-      "encoding": "utf-8",
-      "env": Object {
-        "HOME": "/home/user",
-        "HTTPS_PROXY": "https://example.com",
-        "HTTP_PROXY": "http://example.com",
-        "LANG": "en_US.UTF-8",
-        "LC_ALL": "en_US",
-        "NO_PROXY": "localhost",
-        "PATH": "/tmp/path",
-      },
-      "maxBuffer": 10485760,
-      "timeout": 900000,
-    },
-  },
-]
-`;
-
 exports[`manager/npm/post-update/lerna generateLockFiles() performs full npm install 1`] = `
 Array [
   Object {
diff --git a/lib/manager/npm/post-update/lerna.spec.ts b/lib/manager/npm/post-update/lerna.spec.ts
index 7ba6d474d6..8e771c6eab 100644
--- a/lib/manager/npm/post-update/lerna.spec.ts
+++ b/lib/manager/npm/post-update/lerna.spec.ts
@@ -93,27 +93,13 @@ describe(getName(__filename), () => {
       expect(res.error).toBe(false);
       expect(execSnapshots).toMatchSnapshot();
     });
-    it('maps dot files', async () => {
-      const execSnapshots = mockExecAll(exec);
-      const res = await lernaHelper.generateLockFiles(
-        lernaPkgFile('npm'),
-        'some-dir',
-        {
-          dockerMapDotfiles: true,
-          constraints: { npm: '^6.0.0' },
-        },
-        {}
-      );
-      expect(res.error).toBe(false);
-      expect(execSnapshots).toMatchSnapshot();
-    });
     it('allows scripts for trust level high', async () => {
       const execSnapshots = mockExecAll(exec);
       setAdminConfig({ allowScripts: true });
       const res = await lernaHelper.generateLockFiles(
         lernaPkgFile('npm'),
         'some-dir',
-        {},
+        { constraints: { npm: '^6.0.0' } },
         {}
       );
       expect(res.error).toBe(false);
diff --git a/lib/manager/npm/post-update/lerna.ts b/lib/manager/npm/post-update/lerna.ts
index 89946ac87a..e66c779ded 100644
--- a/lib/manager/npm/post-update/lerna.ts
+++ b/lib/manager/npm/post-update/lerna.ts
@@ -1,6 +1,5 @@
 import semver, { validRange } from 'semver';
 import { quote } from 'shlex';
-import { join } from 'upath';
 import { getAdminConfig } from '../../../config/admin';
 import { TEMPORARY_ERROR } from '../../../constants/error-messages';
 import { logger } from '../../../logger';
@@ -97,12 +96,6 @@ export async function generateLockFiles(
       execOptions.extraEnv.NPM_AUTH = env.NPM_AUTH;
       execOptions.extraEnv.NPM_EMAIL = env.NPM_EMAIL;
     }
-    if (config.dockerMapDotfiles) {
-      const homeDir =
-        process.env.HOME || process.env.HOMEPATH || process.env.USERPROFILE;
-      const homeNpmrc = join(homeDir, '.npmrc');
-      execOptions.docker.volumes = [[homeNpmrc, '/home/ubuntu/.npmrc']];
-    }
     const lernaVersion = getLernaVersion(lernaPackageFile);
     logger.debug('Using lerna version ' + lernaVersion);
     preCommands.push(`npm i -g lerna@${quote(lernaVersion)}`);
diff --git a/lib/manager/npm/post-update/npm.spec.ts b/lib/manager/npm/post-update/npm.spec.ts
index d17d200d5d..08a02a8116 100644
--- a/lib/manager/npm/post-update/npm.spec.ts
+++ b/lib/manager/npm/post-update/npm.spec.ts
@@ -27,7 +27,6 @@ describe('generateLockFile', () => {
     const execSnapshots = mockExecAll(exec);
     fs.readFile = jest.fn(() => 'package-lock-contents') as never;
     const artifactUpdateApproach = 'deep';
-    const dockerMapDotfiles = true;
     const postUpdateOptions = ['npmDedupe'];
     const updates = [
       { depName: 'some-dep', newVersion: '1.0.1', isLockfileUpdate: false },
@@ -36,7 +35,7 @@ describe('generateLockFile', () => {
       'some-dir',
       {},
       'package-lock.json',
-      { dockerMapDotfiles, artifactUpdateApproach, postUpdateOptions },
+      { artifactUpdateApproach, postUpdateOptions },
       updates
     );
     expect(fs.readFile).toHaveBeenCalledTimes(1);
diff --git a/lib/manager/npm/post-update/npm.ts b/lib/manager/npm/post-update/npm.ts
index 305bcfb099..31e78e3c95 100644
--- a/lib/manager/npm/post-update/npm.ts
+++ b/lib/manager/npm/post-update/npm.ts
@@ -75,12 +75,6 @@ export async function generateLockFile(
       execOptions.extraEnv.NPM_AUTH = env.NPM_AUTH;
       execOptions.extraEnv.NPM_EMAIL = env.NPM_EMAIL;
     }
-    if (config.dockerMapDotfiles) {
-      const homeDir =
-        process.env.HOME || process.env.HOMEPATH || process.env.USERPROFILE;
-      const homeNpmrc = join(homeDir, '.npmrc');
-      execOptions.docker.volumes = [[homeNpmrc, '/home/ubuntu/.npmrc']];
-    }
 
     if (!upgrades.every((upgrade) => upgrade.isLockfileUpdate)) {
       // This command updates the lock file based on package.json
diff --git a/lib/manager/npm/post-update/pnpm.spec.ts b/lib/manager/npm/post-update/pnpm.spec.ts
index f1146a0d01..195690f3d4 100644
--- a/lib/manager/npm/post-update/pnpm.spec.ts
+++ b/lib/manager/npm/post-update/pnpm.spec.ts
@@ -24,7 +24,6 @@ describe('generateLockFile', () => {
     env.getChildProcessEnv.mockReturnValue(envMock.basic);
   });
   it('generates lock files', async () => {
-    config.dockerMapDotfiles = true;
     const execSnapshots = mockExecAll(exec);
     fs.readFile = jest.fn(() => 'package-lock-contents') as never;
     const res = await pnpmHelper.generateLockFile('some-dir', {}, config);
diff --git a/lib/manager/npm/post-update/pnpm.ts b/lib/manager/npm/post-update/pnpm.ts
index b9842631f9..f6a802fc60 100644
--- a/lib/manager/npm/post-update/pnpm.ts
+++ b/lib/manager/npm/post-update/pnpm.ts
@@ -54,12 +54,6 @@ export async function generateLockFile(
       execOptions.extraEnv.NPM_AUTH = env.NPM_AUTH;
       execOptions.extraEnv.NPM_EMAIL = env.NPM_EMAIL;
     }
-    if (config.dockerMapDotfiles) {
-      const homeDir =
-        process.env.HOME || process.env.HOMEPATH || process.env.USERPROFILE;
-      const homeNpmrc = join(homeDir, '.npmrc');
-      execOptions.docker.volumes = [[homeNpmrc, '/home/ubuntu/.npmrc']];
-    }
     cmd = 'pnpm';
     let args = 'install --recursive --lockfile-only';
     if (!getAdminConfig().allowScripts || config.ignoreScripts) {
diff --git a/lib/manager/npm/post-update/yarn.spec.ts b/lib/manager/npm/post-update/yarn.spec.ts
index 0274362190..84173a6d82 100644
--- a/lib/manager/npm/post-update/yarn.spec.ts
+++ b/lib/manager/npm/post-update/yarn.spec.ts
@@ -54,7 +54,6 @@ describe(getName(__filename), () => {
         );
       });
       const config = {
-        dockerMapDotfiles: true,
         constraints: {
           yarn: yarnCompatibility,
         },
@@ -140,7 +139,6 @@ describe(getName(__filename), () => {
         );
       });
       const config = {
-        dockerMapDotfiles: true,
         constraints: {
           yarn: yarnCompatibility,
         },
diff --git a/lib/manager/npm/post-update/yarn.ts b/lib/manager/npm/post-update/yarn.ts
index be153bbee7..d7756d9fc7 100644
--- a/lib/manager/npm/post-update/yarn.ts
+++ b/lib/manager/npm/post-update/yarn.ts
@@ -125,12 +125,6 @@ export async function generateLockFile(
       execOptions.extraEnv.NPM_AUTH = env.NPM_AUTH;
       execOptions.extraEnv.NPM_EMAIL = env.NPM_EMAIL;
     }
-    if (config.dockerMapDotfiles) {
-      const homeDir =
-        process.env.HOME || process.env.HOMEPATH || process.env.USERPROFILE;
-      const homeNpmrc = join(homeDir, '.npmrc');
-      execOptions.docker.volumes = [[homeNpmrc, '/home/ubuntu/.npmrc']];
-    }
 
     // This command updates the lock file based on package.json
     commands.push(`yarn install ${cmdOptions}`.trim());
-- 
GitLab