Fix VS Code product configuration not loading

This commit is contained in:
Asher 2020-02-07 16:37:59 -06:00
parent 256419004d
commit 5baf16622f
No known key found for this signature in database
GPG Key ID: D63C1EF81242354A
3 changed files with 30 additions and 56 deletions

View File

@ -172,21 +172,9 @@ class Builder {
])
})
await this.copyDependencies("code-server", this.rootPath, this.buildPath)
await this.task("writing final code-server package.json", async () => {
const json = JSON.parse(await fs.readFile(path.join(this.buildPath, "package.json"), "utf8"))
return fs.writeFile(
path.join(this.buildPath, "package.json"),
JSON.stringify(
{
...json,
commit,
},
null,
2
)
)
await this.copyDependencies("code-server", this.rootPath, this.buildPath, {
commit,
version: process.env.VERSION,
})
}
@ -214,34 +202,6 @@ class Builder {
})
}
const { productJson, packageJson } = await this.task("generating vs code product configuration", async () => {
const merge = async (name: string, json: { [key: string]: string } = {}): Promise<{ [key: string]: string }> => {
return {
...JSON.parse(await fs.readFile(path.join(this.vscodeSourcePath, `${name}.json`), "utf8")),
...json,
}
}
const date = new Date().toISOString()
const [packageJson, productJson] = await Promise.all([merge("package", {}), merge("product", { commit, date })])
return { productJson, packageJson }
})
await this.task("inserting vs code product configuration", async () => {
const filePath = path.join(this.vscodeSourcePath, "out-build/vs/platform/product/common/product.js")
return fs.writeFile(
filePath,
(await fs.readFile(filePath, "utf8")).replace(
"{ /*BUILD->INSERT_PRODUCT_CONFIGURATION*/}",
JSON.stringify({
version: packageJson.version,
...productJson,
})
)
)
})
const vscodeBuildPath = path.join(this.buildPath, "lib/vscode")
await this.task("copying vs code into build directory", async () => {
await fs.mkdirp(vscodeBuildPath)
@ -254,14 +214,13 @@ class Builder {
])
})
await this.copyDependencies("vs code", this.vscodeSourcePath, vscodeBuildPath)
await this.task("writing final vs code product.json", () => {
return fs.writeFile(path.join(vscodeBuildPath, "product.json"), JSON.stringify(productJson, null, 2))
await this.copyDependencies("vs code", this.vscodeSourcePath, vscodeBuildPath, {
commit,
date: new Date().toISOString(),
})
}
private async copyDependencies(name: string, sourcePath: string, buildPath: string): Promise<void> {
private async copyDependencies(name: string, sourcePath: string, buildPath: string, merge: object): Promise<void> {
await this.task(`copying ${name} dependencies`, async () => {
return Promise.all(
["node_modules", "package.json", "yarn.lock"].map((fileName) => {
@ -270,6 +229,22 @@ class Builder {
)
})
const fileName = name === "code-server" ? "package" : "product"
await this.task(`writing final ${name} ${fileName}.json`, async () => {
const json = JSON.parse(await fs.readFile(path.join(sourcePath, `${fileName}.json`), "utf8"))
return fs.writeFile(
path.join(buildPath, `${fileName}.json`),
JSON.stringify(
{
...json,
...merge,
},
null,
2
)
)
})
if (process.env.MINIFY) {
await this.task(`restricting ${name} to production dependencies`, async () => {
return util.promisify(cp.exec)("yarn --production --ignore-scripts", { cwd: buildPath })

View File

@ -2108,10 +2108,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..81d275a80a
index 0000000000..ac6bbc8e98
--- /dev/null
+++ b/src/vs/server/node/server.ts
@@ -0,0 +1,253 @@
@@ -0,0 +1,252 @@
+import * as net from 'net';
+import * as path from 'path';
+import { Emitter } from 'vs/base/common/event';
@ -2161,6 +2161,7 @@ index 0000000000..81d275a80a
+import { ExtensionEnvironmentChannel, FileProviderChannel, NodeProxyService } from 'vs/server/node/channel';
+import { Connection, ExtensionHostConnection, ManagementConnection } from 'vs/server/node/connection';
+import { TelemetryClient } from 'vs/server/node/insights';
+import { logger } from 'vs/server/node/logger';
+import { getLocaleFromConfig, getNlsConfiguration } from 'vs/server/node/nls';
+import { Protocol } from 'vs/server/node/protocol';
+import { getUriTransformer } from 'vs/server/node/util';
@ -2193,11 +2194,9 @@ index 0000000000..81d275a80a
+ logLevel: getLogLevel(environment),
+ },
+ remoteUserDataUri: transformer.transformOutgoing(URI.file(environment.userDataPath)),
+ productConfiguration: {
+ extensionsGallery: product.extensionsGallery,
+ },
+ productConfiguration: product,
+ nlsConfiguration: await getNlsConfiguration(environment.args.locale || await getLocaleFromConfig(environment.userDataPath), environment.userDataPath),
+ commit: product.commit || '',
+ commit: product.commit || 'development',
+ };
+ }
+
@ -2222,7 +2221,7 @@ index 0000000000..81d275a80a
+
+ private async connect(message: ConnectionTypeRequest, protocol: Protocol): Promise<void> {
+ if (product.commit && message.commit !== product.commit) {
+ throw new Error(`Version mismatch (${message.commit} instead of ${product.commit})`);
+ logger.warn(`Version mismatch (${message.commit} instead of ${product.commit})`);
+ }
+
+ switch (message.desiredConnectionType) {

View File

@ -21,7 +21,7 @@
<!-- Workbench Icon/Manifest/CSS -->
<link rel="icon" href="../static-{{COMMIT}}/src/browser/media/favicon.ico" type="image/x-icon" />
<link rel="manifest" href="../static-{{COMMIT}}/src/browser/media/manifest.json" crossorigin="use-credentials">
<link data-name="vs/workbench/workbench.web.api" rel="stylesheet" href="../static-{{COMMIT}}/out/vs/workbench/workbench.web.api.css">
<link data-name="vs/workbench/workbench.web.api" rel="stylesheet" href="./static-{{COMMIT}}/out/vs/workbench/workbench.web.api.css">
<link rel="apple-touch-icon" href="../static-{{COMMIT}}/src/browser/media/code-server.png" />
<meta name="apple-mobile-web-app-capable" content="yes">