From 8469eadf63ab704516372e3ec04ac4b6f61d5c4e Mon Sep 17 00:00:00 2001 From: Dirk Baeumer Date: Mon, 14 May 2018 10:23:42 +0200 Subject: [PATCH] Fixes 47317: Can't use long commands in tasks. Used to work in previous release. --- .../tasks/electron-browser/jsonSchema_v2.ts | 26 ++++++++++++++-- .../parts/tasks/node/taskConfiguration.ts | 30 +++++++++++++------ 2 files changed, 45 insertions(+), 11 deletions(-) diff --git a/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.ts b/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.ts index 191204144ef..4f3218fda37 100644 --- a/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.ts +++ b/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.ts @@ -152,14 +152,36 @@ const taskType: IJSONSchema = { const command: IJSONSchema = { oneOf: [ { - type: 'string', + oneOf: [ + { + type: 'string' + }, + { + type: 'array', + items: { + type: 'string' + }, + description: nls.localize('JsonSchema.commandArray', 'The shell command to be executed. Array items will be joined using a space character') + } + ] }, { type: 'object', required: ['value', 'quoting'], properties: { value: { - type: 'string', + oneOf: [ + { + type: 'string' + }, + { + type: 'array', + items: { + type: 'string' + }, + description: nls.localize('JsonSchema.commandArray', 'The shell command to be executed. Array items will be joined using a space character') + } + ], description: nls.localize('JsonSchema.command.quotedString.value', 'The actual command value') }, quoting: { diff --git a/src/vs/workbench/parts/tasks/node/taskConfiguration.ts b/src/vs/workbench/parts/tasks/node/taskConfiguration.ts index 1e7e48d3ad0..70046911938 100644 --- a/src/vs/workbench/parts/tasks/node/taskConfiguration.ts +++ b/src/vs/workbench/parts/tasks/node/taskConfiguration.ts @@ -182,14 +182,20 @@ export interface LegacyCommandProperties { isShellCommand?: boolean | ShellConfiguration; } -export type CommandString = string | { value: string, quoting: 'escape' | 'strong' | 'weak' }; +export type CommandString = string | string[] | { value: string | string[], quoting: 'escape' | 'strong' | 'weak' }; export namespace CommandString { export function value(value: CommandString): string { if (Types.isString(value)) { return value; + } else if (Types.isStringArray(value)) { + return value.join(' '); } else { - return value.value; + if (Types.isString(value.value)) { + return value.value; + } else { + return value.value.join(' '); + } } } } @@ -787,14 +793,20 @@ namespace CommandConfiguration { } if (Types.isString(value)) { return value; + } else if (Types.isStringArray(value)) { + return value.join(' '); + } else { + let quoting = Tasks.ShellQuoting.from(value.quoting); + let result = Types.isString(value.value) ? value.value : Types.isStringArray(value.value) ? value.value.join(' ') : undefined; + if (result) { + return { + value: result, + quoting: quoting + }; + } else { + return undefined; + } } - if (Types.isString(value.value)) { - return { - value: value.value, - quoting: Tasks.ShellQuoting.from(value.quoting) - }; - } - return undefined; } } -- GitLab