From 00549804819dcaf056f9a747cef412f218222760 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Tue, 2 Jul 2019 11:20:59 -0700 Subject: [PATCH] Pass args via object --- .../api/browser/mainThreadTerminalService.ts | 24 +++++++++---------- .../workbench/api/common/extHost.protocol.ts | 14 ++++++++++- .../api/node/extHostTerminalService.ts | 5 ++-- 3 files changed, 27 insertions(+), 16 deletions(-) diff --git a/src/vs/workbench/api/browser/mainThreadTerminalService.ts b/src/vs/workbench/api/browser/mainThreadTerminalService.ts index 5ba2b3bbb24..a388f623d74 100644 --- a/src/vs/workbench/api/browser/mainThreadTerminalService.ts +++ b/src/vs/workbench/api/browser/mainThreadTerminalService.ts @@ -5,9 +5,9 @@ import { IDisposable, dispose } from 'vs/base/common/lifecycle'; import { ITerminalService, ITerminalInstance, IShellLaunchConfig, ITerminalProcessExtHostProxy, ITerminalProcessExtHostRequest, ITerminalDimensions, EXT_HOST_CREATION_DELAY, IAvailableShellsRequest, IDefaultShellAndArgsRequest } from 'vs/workbench/contrib/terminal/common/terminal'; -import { ExtHostContext, ExtHostTerminalServiceShape, MainThreadTerminalServiceShape, MainContext, IExtHostContext, ShellLaunchConfigDto } from 'vs/workbench/api/common/extHost.protocol'; +import { ExtHostContext, ExtHostTerminalServiceShape, MainThreadTerminalServiceShape, MainContext, IExtHostContext, ShellLaunchConfigDto, TerminalLaunchConfig } from 'vs/workbench/api/common/extHost.protocol'; import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers'; -import { UriComponents, URI } from 'vs/base/common/uri'; +import { URI } from 'vs/base/common/uri'; import { StopWatch } from 'vs/base/common/stopwatch'; import { ITerminalInstanceService } from 'vs/workbench/contrib/terminal/browser/terminal'; import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService'; @@ -78,18 +78,18 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape // when the extension host process goes down ? } - public $createTerminal(name?: string, shellPath?: string, shellArgs?: string[] | string, cwd?: string | UriComponents, env?: { [key: string]: string }, waitOnExit?: boolean, strictEnv?: boolean, hideFromUser?: boolean, isVirtualProcess?: boolean): Promise<{ id: number, name: string }> { + public $createTerminal(launchConfig: TerminalLaunchConfig): Promise<{ id: number, name: string }> { const shellLaunchConfig: IShellLaunchConfig = { - name, - executable: shellPath, - args: shellArgs, - cwd: typeof cwd === 'string' ? cwd : URI.revive(cwd), - waitOnExit, + name: launchConfig.name, + executable: launchConfig.shellPath, + args: launchConfig.shellArgs, + cwd: typeof launchConfig.cwd === 'string' ? launchConfig.cwd : URI.revive(launchConfig.cwd), + waitOnExit: launchConfig.waitOnExit, ignoreConfigurationCwd: true, - env, - strictEnv, - hideFromUser, - isVirtualProcess + env: launchConfig.env, + strictEnv: launchConfig.strictEnv, + hideFromUser: launchConfig.hideFromUser, + isVirtualProcess: launchConfig.isVirtualProcess }; const terminal = this._terminalService.createTerminal(shellLaunchConfig); this._terminalProcesses[terminal.id] = new Promise(r => this._terminalProcessesReady[terminal.id] = r); diff --git a/src/vs/workbench/api/common/extHost.protocol.ts b/src/vs/workbench/api/common/extHost.protocol.ts index 0733bc2776d..603fe598cfe 100644 --- a/src/vs/workbench/api/common/extHost.protocol.ts +++ b/src/vs/workbench/api/common/extHost.protocol.ts @@ -389,8 +389,20 @@ export interface MainThreadProgressShape extends IDisposable { $progressEnd(handle: number): void; } +export interface TerminalLaunchConfig { + name?: string; + shellPath?: string; + shellArgs?: string[] | string; + cwd?: string | UriComponents; + env?: { [key: string]: string | null }; + waitOnExit?: boolean; + strictEnv?: boolean; + hideFromUser?: boolean; + isVirtualProcess?: boolean; +} + export interface MainThreadTerminalServiceShape extends IDisposable { - $createTerminal(name?: string, shellPath?: string, shellArgs?: string[] | string, cwd?: string | UriComponents, env?: { [key: string]: string | null }, waitOnExit?: boolean, strictEnv?: boolean, hideFromUser?: boolean, isVirtualProcess?: boolean): Promise<{ id: number, name: string }>; + $createTerminal(config: TerminalLaunchConfig): Promise<{ id: number, name: string }>; $createTerminalRenderer(name: string): Promise; $dispose(terminalId: number): void; $hide(terminalId: number): void; diff --git a/src/vs/workbench/api/node/extHostTerminalService.ts b/src/vs/workbench/api/node/extHostTerminalService.ts index cbac2f8f96b..9d737f484d0 100644 --- a/src/vs/workbench/api/node/extHostTerminalService.ts +++ b/src/vs/workbench/api/node/extHostTerminalService.ts @@ -119,15 +119,14 @@ export class ExtHostTerminal extends BaseExtHostTerminal implements vscode.Termi strictEnv?: boolean, hideFromUser?: boolean ): void { - this._proxy.$createTerminal(this._name, shellPath, shellArgs, cwd, env, waitOnExit, strictEnv, hideFromUser).then(terminal => { + this._proxy.$createTerminal({ name: this._name, shellPath, shellArgs, cwd, env, waitOnExit, strictEnv, hideFromUser }).then(terminal => { this._name = terminal.name; this._runQueuedRequests(terminal.id); }); } public createVirtualProcess(): Promise { - // TODO: Change $createTerminal to accept an object - return this._proxy.$createTerminal(this._name, undefined, undefined, undefined, undefined, undefined, undefined, undefined, true).then(terminal => { + return this._proxy.$createTerminal({ name: this._name, isVirtualProcess: true }).then(terminal => { this._name = terminal.name; this._runQueuedRequests(terminal.id); }); -- GitLab