@@ -3,12 +3,12 @@ import * as path from "path";
3
3
import { promises as dns } from "dns" ;
4
4
import { spawnSync } from "child_process" ;
5
5
6
- import { BinarySource } from "./interfaces" ;
6
+ import { ArtifactSource } from "./interfaces" ;
7
7
import { fetchArtifactReleaseInfo } from "./fetch_artifact_release_info" ;
8
8
import { downloadArtifact } from "./download_artifact" ;
9
9
import { log , assert } from "../util" ;
10
10
11
- export async function ensureServerBinary ( source : null | BinarySource ) : Promise < null | string > {
11
+ export async function ensureServerBinary ( source : null | ArtifactSource ) : Promise < null | string > {
12
12
if ( ! source ) {
13
13
vscode . window . showErrorMessage (
14
14
"Unfortunately we don't ship binaries for your platform yet. " +
@@ -22,7 +22,7 @@ export async function ensureServerBinary(source: null | BinarySource): Promise<n
22
22
}
23
23
24
24
switch ( source . type ) {
25
- case BinarySource . Type . ExplicitPath : {
25
+ case ArtifactSource . Type . ExplicitPath : {
26
26
if ( isBinaryAvailable ( source . path ) ) {
27
27
return source . path ;
28
28
}
@@ -34,24 +34,26 @@ export async function ensureServerBinary(source: null | BinarySource): Promise<n
34
34
) ;
35
35
return null ;
36
36
}
37
- case BinarySource . Type . GithubRelease : {
37
+ case ArtifactSource . Type . GithubRelease : {
38
38
const prebuiltBinaryPath = path . join ( source . dir , source . file ) ;
39
39
40
40
const installedVersion : null | string = getServerVersion ( source . storage ) ;
41
- const requiredVersion : string = source . version ;
41
+ const requiredVersion : string = source . tag ;
42
42
43
43
log . debug ( "Installed version:" , installedVersion , "required:" , requiredVersion ) ;
44
44
45
45
if ( isBinaryAvailable ( prebuiltBinaryPath ) && installedVersion === requiredVersion ) {
46
46
return prebuiltBinaryPath ;
47
47
}
48
48
49
- const userResponse = await vscode . window . showInformationMessage (
50
- `Language server version ${ source . version } for rust-analyzer is not installed. ` +
51
- "Do you want to download it now?" ,
52
- "Download now" , "Cancel"
53
- ) ;
54
- if ( userResponse !== "Download now" ) return null ;
49
+ if ( source . askBeforeDownload ) {
50
+ const userResponse = await vscode . window . showInformationMessage (
51
+ `Language server version ${ source . tag } for rust-analyzer is not installed. ` +
52
+ "Do you want to download it now?" ,
53
+ "Download now" , "Cancel"
54
+ ) ;
55
+ if ( userResponse !== "Download now" ) return null ;
56
+ }
55
57
56
58
if ( ! await downloadServer ( source ) ) return null ;
57
59
@@ -60,9 +62,9 @@ export async function ensureServerBinary(source: null | BinarySource): Promise<n
60
62
}
61
63
}
62
64
63
- async function downloadServer ( source : BinarySource . GithubRelease ) : Promise < boolean > {
65
+ async function downloadServer ( source : ArtifactSource . GithubRelease ) : Promise < boolean > {
64
66
try {
65
- const releaseInfo = await fetchArtifactReleaseInfo ( source . repo , source . file , source . version ) ;
67
+ const releaseInfo = await fetchArtifactReleaseInfo ( source . repo , source . file , source . tag ) ;
66
68
67
69
await downloadArtifact ( releaseInfo , source . file , source . dir , "language server" ) ;
68
70
await setServerVersion ( source . storage , releaseInfo . releaseName ) ;
0 commit comments