mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-25 04:23:25 +00:00
Prepare Code extension for bundling
This commit is contained in:
parent
9f1a3ae5ab
commit
262a698875
4 changed files with 19 additions and 1 deletions
|
@ -74,6 +74,8 @@ The server binary is stored in:
|
||||||
* macOS: `~/Library/Application\ Support/Code/User/globalStorage/matklad.rust-analyzer`
|
* macOS: `~/Library/Application\ Support/Code/User/globalStorage/matklad.rust-analyzer`
|
||||||
* Windows: `%APPDATA%\Code\User\globalStorage\matklad.rust-analyzer`
|
* Windows: `%APPDATA%\Code\User\globalStorage\matklad.rust-analyzer`
|
||||||
|
|
||||||
|
However, if you are using a version of the extension with a bundled server binary and you are not running NixOS, the server binary might be instead running from: `~/.vscode/extensions/matklad.rust-analyzer-VERSION`.
|
||||||
|
|
||||||
Note that we only support two most recent versions of VS Code.
|
Note that we only support two most recent versions of VS Code.
|
||||||
|
|
||||||
==== Updates
|
==== Updates
|
||||||
|
|
|
@ -10,4 +10,5 @@
|
||||||
!package-lock.json
|
!package-lock.json
|
||||||
!package.json
|
!package.json
|
||||||
!ra_syntax_tree.tmGrammar.json
|
!ra_syntax_tree.tmGrammar.json
|
||||||
|
!server
|
||||||
!README.md
|
!README.md
|
||||||
|
|
|
@ -36,9 +36,11 @@ export class Config {
|
||||||
} = vscode.extensions.getExtension(this.extensionId)!.packageJSON;
|
} = vscode.extensions.getExtension(this.extensionId)!.packageJSON;
|
||||||
|
|
||||||
readonly globalStorageUri: vscode.Uri;
|
readonly globalStorageUri: vscode.Uri;
|
||||||
|
readonly installUri: vscode.Uri;
|
||||||
|
|
||||||
constructor(ctx: vscode.ExtensionContext) {
|
constructor(ctx: vscode.ExtensionContext) {
|
||||||
this.globalStorageUri = ctx.globalStorageUri;
|
this.globalStorageUri = ctx.globalStorageUri;
|
||||||
|
this.installUri = ctx.extensionUri;
|
||||||
vscode.workspace.onDidChangeConfiguration(this.onDidChangeConfiguration, this, ctx.subscriptions);
|
vscode.workspace.onDidChangeConfiguration(this.onDidChangeConfiguration, this, ctx.subscriptions);
|
||||||
this.refreshLogging();
|
this.refreshLogging();
|
||||||
}
|
}
|
||||||
|
|
|
@ -345,7 +345,20 @@ async function getServer(config: Config, state: PersistentState): Promise<string
|
||||||
}
|
}
|
||||||
const ext = platform.indexOf("-windows-") !== -1 ? ".exe" : "";
|
const ext = platform.indexOf("-windows-") !== -1 ? ".exe" : "";
|
||||||
const dest = vscode.Uri.joinPath(config.globalStorageUri, `rust-analyzer-${platform}${ext}`);
|
const dest = vscode.Uri.joinPath(config.globalStorageUri, `rust-analyzer-${platform}${ext}`);
|
||||||
const exists = await vscode.workspace.fs.stat(dest).then(() => true, () => false);
|
const bundled = vscode.Uri.joinPath(config.installUri, "server", `rust-analyzer${ext}`);
|
||||||
|
const bundledExists = await vscode.workspace.fs.stat(bundled).then(() => true, () => false);
|
||||||
|
let exists = await vscode.workspace.fs.stat(dest).then(() => true, () => false);
|
||||||
|
if (bundledExists) {
|
||||||
|
await state.updateServerVersion(config.package.version);
|
||||||
|
if (!await isNixOs()) {
|
||||||
|
return bundled.fsPath;
|
||||||
|
}
|
||||||
|
if (!exists) {
|
||||||
|
await vscode.workspace.fs.copy(bundled, dest);
|
||||||
|
await patchelf(dest);
|
||||||
|
exists = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (!exists) {
|
if (!exists) {
|
||||||
await state.updateServerVersion(undefined);
|
await state.updateServerVersion(undefined);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue