From eebb8bb314bdcc96cb600e0a279a829d1dedf0d3 Mon Sep 17 00:00:00 2001 From: Asher Date: Wed, 26 Aug 2020 14:18:40 -0500 Subject: [PATCH] Add proposed API flag (#2002) Co-authored-by: giddyuptiger <65830808+giddyuptiger@users.noreply.github.com> --- ci/dev/vscode.patch | 35 ++++++++++++++++++++++++++++------- src/node/cli.ts | 5 +++++ 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/ci/dev/vscode.patch b/ci/dev/vscode.patch index 2b72b38b..6dc5bad4 100644 --- a/ci/dev/vscode.patch +++ b/ci/dev/vscode.patch @@ -1267,10 +1267,10 @@ index 0000000000..56331ff1fc +require('../../bootstrap-amd').load('vs/server/entry'); diff --git a/src/vs/server/ipc.d.ts b/src/vs/server/ipc.d.ts new file mode 100644 -index 0000000000..7e1cd270c8 +index 0000000000..16ed214d94 --- /dev/null +++ b/src/vs/server/ipc.d.ts -@@ -0,0 +1,115 @@ +@@ -0,0 +1,119 @@ +/** + * External interfaces for integration into code-server over IPC. No vs imports + * should be made in this file. @@ -1319,6 +1319,7 @@ index 0000000000..7e1cd270c8 +export interface Args { + 'user-data-dir'?: string; + ++ 'enable-proposed-api'?: string[]; + 'extensions-dir'?: string; + 'builtin-extensions-dir'?: string; + 'extra-extensions-dir'?: string[]; @@ -1366,7 +1367,10 @@ index 0000000000..7e1cd270c8 + readonly workspaceUri?: UriComponents; + readonly logLevel?: number; + readonly workspaceProvider?: { -+ payload: [["userDataPath", string]]; ++ payload: [ ++ ["userDataPath", string], ++ ["enableProposedApi", string], ++ ]; + }; + }; + readonly remoteUserDataUri: UriComponents; @@ -2475,10 +2479,10 @@ index 0000000000..3c74512192 +} diff --git a/src/vs/server/node/server.ts b/src/vs/server/node/server.ts new file mode 100644 -index 0000000000..f2c16b9f81 +index 0000000000..4b88fedb2f --- /dev/null +++ b/src/vs/server/node/server.ts -@@ -0,0 +1,282 @@ +@@ -0,0 +1,285 @@ +import * as fs from 'fs'; +import * as net from 'net'; +import * as path from 'path'; @@ -2578,7 +2582,10 @@ index 0000000000..f2c16b9f81 + remoteAuthority: options.remoteAuthority, + logLevel: getLogLevel(environment), + workspaceProvider: { -+ payload: [["userDataPath", environment.userDataPath]], ++ payload: [ ++ ["userDataPath", environment.userDataPath], ++ ["enableProposedApi", JSON.stringify(options.args["enable-proposed-api"] || [])] ++ ], + }, + }, + remoteUserDataUri: transformer.transformOutgoing(URI.file(environment.userDataPath)), @@ -3073,7 +3080,7 @@ index 6e3182a696..7df85da165 100644 }; diff --git a/src/vs/workbench/services/environment/browser/environmentService.ts b/src/vs/workbench/services/environment/browser/environmentService.ts -index ba2701ec54..efea3bd5bc 100644 +index ba2701ec54..4d4aaa6958 100644 --- a/src/vs/workbench/services/environment/browser/environmentService.ts +++ b/src/vs/workbench/services/environment/browser/environmentService.ts @@ -121,8 +121,18 @@ export class BrowserWorkbenchEnvironmentService implements IWorkbenchEnvironment @@ -3096,6 +3103,20 @@ index ba2701ec54..efea3bd5bc 100644 @memoize get settingsResource(): URI { return joinPath(this.userRoamingDataHome, 'settings.json'); } +@@ -284,7 +294,12 @@ export class BrowserWorkbenchEnvironmentService implements IWorkbenchEnvironment + extensionHostDebugEnvironment.params.port = parseInt(value); + break; + case 'enableProposedApi': +- extensionHostDebugEnvironment.extensionEnabledProposedApi = []; ++ try { ++ extensionHostDebugEnvironment.extensionEnabledProposedApi = JSON.parse(value); ++ } catch (error) { ++ console.error(error); ++ extensionHostDebugEnvironment.extensionEnabledProposedApi = []; ++ } + break; + } + } diff --git a/src/vs/workbench/services/extensionManagement/common/extensionEnablementService.ts b/src/vs/workbench/services/extensionManagement/common/extensionEnablementService.ts index c28b147740..6090200d9c 100644 --- a/src/vs/workbench/services/extensionManagement/common/extensionEnablementService.ts diff --git a/src/node/cli.ts b/src/node/cli.ts index 22c65dbf..85dae9ee 100644 --- a/src/node/cli.ts +++ b/src/node/cli.ts @@ -130,6 +130,11 @@ const options: Options> = { description: "Install or update a VS Code extension by id or vsix. The identifier of an extension is `${publisher}.${name}`. To install a specific version provide `@${version}`. For example: 'vscode.csharp@1.2.3'.", }, + "enable-proposed-api": { + type: "string[]", + description: + "Enable proposed API features for extensions. Can receive one or more extension IDs to enable individually.", + }, "uninstall-extension": { type: "string[]", description: "Uninstall a VS Code extension by id." }, "show-versions": { type: "boolean", description: "Show VS Code extension versions." }, "proxy-domain": { type: "string[]", description: "Domain used for proxying ports." },