diff --git a/packages/tools/bundleDefaultPlugins.ts b/packages/tools/bundleDefaultPlugins.ts index 030ea727ba..efc1332b42 100644 --- a/packages/tools/bundleDefaultPlugins.ts +++ b/packages/tools/bundleDefaultPlugins.ts @@ -41,7 +41,7 @@ async function downloadFile(url: string, outputPath: string) { export async function extractPlugins(currentDir: string, defaultPluginDir: string, downloadedPluginsNames: PluginIdAndName): Promise { for (const pluginId of Object.keys(downloadedPluginsNames)) { - await execCommand(`tar xzf ${currentDir}/${downloadedPluginsNames[pluginId]}`, { quiet: true }); + await execCommand(`tar xzf ${currentDir}/${downloadedPluginsNames[pluginId]}`, { quiet: true, splitCommandOptions: { handleEscape: false } }); await move(`package/publish/${pluginId}.jpl`, `${defaultPluginDir}/${pluginId}/plugin.jpl`, { overwrite: true }); await move(`package/publish/${pluginId}.json`, `${defaultPluginDir}/${pluginId}/manifest.json`, { overwrite: true }); await remove(`${downloadedPluginsNames[pluginId]}`); diff --git a/packages/utils/execCommand.ts b/packages/utils/execCommand.ts index 40415d87c2..7aae3cec73 100644 --- a/packages/utils/execCommand.ts +++ b/packages/utils/execCommand.ts @@ -1,6 +1,6 @@ import * as execa from 'execa'; import commandToString from './commandToString'; -import splitCommandString from './splitCommandString'; +import splitCommandString, { SplitCommandOptions } from './splitCommandString'; import { stdout } from 'process'; interface ExecCommandOptions { @@ -8,6 +8,7 @@ interface ExecCommandOptions { showStdout?: boolean; showStderr?: boolean; quiet?: boolean; + splitCommandOptions?: SplitCommandOptions | null; } export default async (command: string | string[], options: ExecCommandOptions | null = null): Promise => { @@ -33,7 +34,7 @@ export default async (command: string | string[], options: ExecCommandOptions | } } - const args: string[] = typeof command === 'string' ? splitCommandString(command) : command as string[]; + const args: string[] = typeof command === 'string' ? splitCommandString(command, options.splitCommandOptions || null) : command as string[]; const executableName = args[0]; args.splice(0, 1); const promise = execa(executableName, args); diff --git a/packages/utils/splitCommandString.ts b/packages/utils/splitCommandString.ts index cdaab6cd47..a0c6966c67 100644 --- a/packages/utils/splitCommandString.ts +++ b/packages/utils/splitCommandString.ts @@ -1,4 +1,8 @@ -export default (command: string, options: any = null) => { +export interface SplitCommandOptions { + handleEscape?: boolean; +} + +export default (command: string, options: SplitCommandOptions | null = null) => { options = options || {}; if (!('handleEscape' in options)) { options.handleEscape = true;