diff --git a/src/utils/executeAsTask.ts b/src/utils/executeAsTask.ts index 42dc93866f..7af50185da 100644 --- a/src/utils/executeAsTask.ts +++ b/src/utils/executeAsTask.ts @@ -8,7 +8,7 @@ import * as vscode from 'vscode'; import { IActionContext } from 'vscode-azureextensionui'; import { addDockerSettingsToEnv } from './addDockerSettingsToEnv'; -export async function executeAsTask(context: IActionContext, command: string, name: string, options: { addDockerEnv?: boolean, workspaceFolder?: vscode.WorkspaceFolder, cwd?: string, alwaysRunNew?: boolean }): Promise { +export async function executeAsTask(context: IActionContext, command: string, name: string, options: { addDockerEnv?: boolean, workspaceFolder?: vscode.WorkspaceFolder, cwd?: string, alwaysRunNew?: boolean }): Promise { let newEnv: NodeJS.ProcessEnv | undefined; options = options ?? {}; @@ -34,5 +34,16 @@ export async function executeAsTask(context: IActionContext, command: string, na task.definition.idRandomizer = Math.random(); } - return vscode.tasks.executeTask(task); + const taskExecution = await vscode.tasks.executeTask(task); + + const taskEndPromise = new Promise((resolve) => { + const disposable = vscode.tasks.onDidEndTaskProcess(e => { + if (e.execution === taskExecution) { + disposable.dispose(); + resolve(); + } + }); + }); + + return taskEndPromise; }