From 2147cfa36892bbe9ab791110368854773e03928a Mon Sep 17 00:00:00 2001 From: giddyuptiger <65830808+giddyuptiger@users.noreply.github.com> Date: Sat, 6 Jun 2020 13:44:57 -0700 Subject: [PATCH 1/2] Add proposed API flag to CLI --- src/node/cli.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/node/cli.ts b/src/node/cli.ts index 22c65dbf012d..9bc7c723ee42 100644 --- a/src/node/cli.ts +++ b/src/node/cli.ts @@ -40,6 +40,7 @@ export interface Args extends VsArgs { readonly force?: boolean readonly "list-extensions"?: boolean readonly "install-extension"?: string[] + readonly "enable-proposed-api"?: string[] readonly "show-versions"?: boolean readonly "uninstall-extension"?: string[] readonly "proxy-domain"?: string[] @@ -130,6 +131,7 @@ const options: Options<Required<Args>> = { 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 (beta) API for VS Code extensions by id." }, "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." }, From 741319d5866d7d3c153296487c8d8df7310dcc0c Mon Sep 17 00:00:00 2001 From: Asher <ash@coder.com> Date: Tue, 25 Aug 2020 17:58:55 -0500 Subject: [PATCH 2/2] Patch payload with proposed API flag value --- ci/dev/vscode.patch | 35 ++++++++++++++++++++++++++++------- src/node/cli.ts | 7 +++++-- 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/ci/dev/vscode.patch b/ci/dev/vscode.patch index 293f68620254..c1ac92c1d4c9 100644 --- a/ci/dev/vscode.patch +++ b/ci/dev/vscode.patch @@ -1269,10 +1269,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. @@ -1321,6 +1321,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[]; @@ -1368,7 +1369,10 @@ index 0000000000..7e1cd270c8 + readonly workspaceUri?: UriComponents; + readonly logLevel?: number; + readonly workspaceProvider?: { -+ payload: [["userDataPath", string]]; ++ payload: [ ++ ["userDataPath", string], ++ ["enableProposedApi", string], ++ ]; + }; + }; + readonly remoteUserDataUri: UriComponents; @@ -2477,10 +2481,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'; @@ -2580,7 +2584,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)), @@ -3075,7 +3082,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 @@ -3098,6 +3105,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 9bc7c723ee42..85dae9eee2d0 100644 --- a/src/node/cli.ts +++ b/src/node/cli.ts @@ -40,7 +40,6 @@ export interface Args extends VsArgs { readonly force?: boolean readonly "list-extensions"?: boolean readonly "install-extension"?: string[] - readonly "enable-proposed-api"?: string[] readonly "show-versions"?: boolean readonly "uninstall-extension"?: string[] readonly "proxy-domain"?: string[] @@ -131,7 +130,11 @@ const options: Options<Required<Args>> = { 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 (beta) API for VS Code extensions by id." }, + "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." },