From 08922f4fba8cd8ba1ed655092bcbd1976df4675b Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Mon, 11 May 2020 18:17:56 +0200
Subject: [PATCH] fix: quote remaining artifacts

---
 lib/manager/cargo/artifacts.ts       | 5 ++++-
 lib/manager/cocoapods/artifacts.ts   | 3 ++-
 lib/manager/composer/artifacts.ts    | 4 +++-
 lib/manager/mix/artifacts.ts         | 3 ++-
 lib/manager/npm/post-update/lerna.ts | 3 ++-
 5 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/lib/manager/cargo/artifacts.ts b/lib/manager/cargo/artifacts.ts
index 6a6643166b..c94ff14e40 100644
--- a/lib/manager/cargo/artifacts.ts
+++ b/lib/manager/cargo/artifacts.ts
@@ -1,3 +1,4 @@
+import { quote } from 'shlex';
 import { logger } from '../../logger';
 import { ExecOptions, exec } from '../../util/exec';
 import {
@@ -31,7 +32,9 @@ export async function updateArtifacts({
       const dep = updatedDeps[i];
       // Update dependency `${dep}` in Cargo.lock file corresponding to Cargo.toml file located
       // at ${localPackageFileName} path
-      let cmd = `cargo update --manifest-path ${packageFileName} --package ${dep}`;
+      let cmd = `cargo update --manifest-path ${quote(
+        packageFileName
+      )} --package ${quote(dep)}`;
       const execOptions: ExecOptions = {
         docker: {
           image: 'renovate/rust',
diff --git a/lib/manager/cocoapods/artifacts.ts b/lib/manager/cocoapods/artifacts.ts
index 5e4d804b8a..78879f7da9 100644
--- a/lib/manager/cocoapods/artifacts.ts
+++ b/lib/manager/cocoapods/artifacts.ts
@@ -1,3 +1,4 @@
+import { quote } from 'shlex';
 import { dirname, join } from 'upath';
 import { logger } from '../../logger';
 import { platform } from '../../platform';
@@ -18,7 +19,7 @@ function getPluginCommands(content: string): string[] {
     const match = pluginRegex.exec(line);
     if (match) {
       const { plugin } = match.groups;
-      result.add(`gem install ${plugin}`);
+      result.add(`gem install ${quote(plugin)}`);
     }
   });
   return [...result];
diff --git a/lib/manager/composer/artifacts.ts b/lib/manager/composer/artifacts.ts
index 6ec2b5be53..097dccfc08 100644
--- a/lib/manager/composer/artifacts.ts
+++ b/lib/manager/composer/artifacts.ts
@@ -1,6 +1,7 @@
 import URL from 'url';
 import is from '@sindresorhus/is';
 import fs from 'fs-extra';
+import { quote } from 'shlex';
 import upath from 'upath';
 import { SYSTEM_INSUFFICIENT_DISK_SPACE } from '../../constants/error-messages';
 import {
@@ -115,7 +116,8 @@ export async function updateArtifacts({
       args = 'install';
     } else {
       args =
-        ('update ' + updatedDeps.join(' ')).trim() + ' --with-dependencies';
+        ('update ' + updatedDeps.map(quote).join(' ')).trim() +
+        ' --with-dependencies';
     }
     if (config.composerIgnorePlatformReqs) {
       args += ' --ignore-platform-reqs';
diff --git a/lib/manager/mix/artifacts.ts b/lib/manager/mix/artifacts.ts
index e6a3e1f39d..610d471f09 100644
--- a/lib/manager/mix/artifacts.ts
+++ b/lib/manager/mix/artifacts.ts
@@ -1,4 +1,5 @@
 import fs from 'fs-extra';
+import { quote } from 'shlex';
 import upath from 'upath';
 import { logger } from '../../logger';
 import { platform } from '../../platform';
@@ -61,7 +62,7 @@ export async function updateArtifacts({
 
   /* istanbul ignore next */
   try {
-    const command = [...cmdParts, ...updatedDeps].join(' ');
+    const command = [...cmdParts, ...updatedDeps.map(quote)].join(' ');
     await exec(command, { cwd });
   } catch (err) {
     logger.warn(
diff --git a/lib/manager/npm/post-update/lerna.ts b/lib/manager/npm/post-update/lerna.ts
index 799cb482a4..ef5cd9bd4a 100644
--- a/lib/manager/npm/post-update/lerna.ts
+++ b/lib/manager/npm/post-update/lerna.ts
@@ -1,3 +1,4 @@
+import { quote } from 'shlex';
 import { logger } from '../../../logger';
 import { platform } from '../../../platform';
 import { exec } from '../../../util/exec';
@@ -54,7 +55,7 @@ export async function generateLockFiles(
     //   volumes.push([homeNpmrc, `/home/ubuntu/.npmrc`]);
     // }
     cmd.push(`${lernaClient} install ${params}`);
-    cmd.push(`npx lerna@${lernaVersion} bootstrap --no-ci -- ${params}`);
+    cmd.push(`npx lerna@${quote(lernaVersion)} bootstrap --no-ci -- ${params}`);
     await exec(cmd, {
       cwd,
       env,
-- 
GitLab