From b83d2ea28678bf34aa83eeb1db0055e85c3398e8 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Fri, 14 Jul 2017 16:39:54 -0700 Subject: [PATCH] Prep task provider for muiltiroot --- .../typescript/src/features/taskProvider.ts | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/extensions/typescript/src/features/taskProvider.ts b/extensions/typescript/src/features/taskProvider.ts index e3008d28fd9..47547c3a895 100644 --- a/extensions/typescript/src/features/taskProvider.ts +++ b/extensions/typescript/src/features/taskProvider.ts @@ -43,16 +43,17 @@ class TscTaskProvider implements vscode.TaskProvider { } public async provideTasks(token: vscode.CancellationToken): Promise { - const rootPath = vscode.workspace.rootPath; - if (!rootPath) { + const folders = vscode.workspace.workspaceFolders; + if (!folders || !folders.length) { return []; } - const command = await this.getCommand(); + const rootPath = folders[0].uri; + const command = await this.getCommand(rootPath); const projects = await this.getAllTsConfigs(token); return projects.map(configFile => { - const configFileName = path.relative(rootPath, configFile); + const configFileName = path.relative(rootPath.fsPath, configFile); const identifier: TypeScriptTaskDefinition = { type: 'typescript', tsconfig: configFileName }; const buildTask = new vscode.Task(identifier, `build ${configFileName}`, 'tsc', new vscode.ShellExecution(`${command} -p "${configFile}"`), '$tsc'); buildTask.group = vscode.TaskGroup.Build; @@ -108,11 +109,11 @@ class TscTaskProvider implements vscode.TaskProvider { return Array.from(await this.tsconfigProvider.getConfigsForWorkspace()); } - private async getCommand(): Promise { + private async getCommand(root: vscode.Uri): Promise { const platform = process.platform; - if (platform === 'win32' && await exists(path.join(vscode.workspace.rootPath!, 'node_modules', '.bin', 'tsc.cmd'))) { + if (platform === 'win32' && await exists(path.join(root.fsPath, 'node_modules', '.bin', 'tsc.cmd'))) { return path.join('.', 'node_modules', '.bin', 'tsc.cmd'); - } else if ((platform === 'linux' || platform === 'darwin') && await exists(path.join(vscode.workspace.rootPath!, 'node_modules', '.bin', 'tsc'))) { + } else if ((platform === 'linux' || platform === 'darwin') && await exists(path.join(root.fsPath, 'node_modules', '.bin', 'tsc'))) { return path.join('.', 'node_modules', '.bin', 'tsc'); } else { return 'tsc';