Skip to content

Commit 836a6f3

Browse files
committed
Improve error messages when server binary download fails.
1 parent 8bfd370 commit 836a6f3

File tree

1 file changed

+23
-7
lines changed

1 file changed

+23
-7
lines changed

vscode-client/src/extension.ts

+23-7
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,12 @@ function benten_ls_exists(executable) {
108108
}
109109

110110

111+
function show_err_msg(msg) {
112+
console.error(msg)
113+
window.showErrorMessage(msg);
114+
}
115+
116+
111117
function get_redirect(url, callback) {
112118
http.get(url, (response) => {
113119
if (response.headers.location) {
@@ -118,7 +124,8 @@ function get_redirect(url, callback) {
118124
callback(response);
119125
}
120126
}).on('error', (e) => {
121-
console.log(`Connection error: ${e}`);
127+
const msg = `Failed trying to download Benten server binaries from ${url}. Site responded with ${e}`;
128+
show_err_msg(msg);
122129
});
123130
}
124131

@@ -154,27 +161,36 @@ function get_language_server(callback) {
154161
fs.mkdir(sbgdir, { recursive: true }, (err) => {
155162
if (err) {
156163
// Couldn't make the directory
157-
console.error(`Could not create directory for downloaded package!`)
164+
const msg = `Failed to create directory: ${sbgdir}. This is where the downloaded Benten server binaries would have been stored.`;
165+
show_err_msg(msg);
158166
callback(null);
159167
}
160168

161169
// Download from github releases page
162170
const package_url = `${github_release_url}/${pkgname}`;
163171
console.log(`Downloading server code from ${package_url}`);
164172
get_redirect(package_url, (response) => {
165-
const { statusCode } = response;
166-
console.log(`Server response: ${response.statusCode} ${response.statusMessage}`);
173+
const server_response = `Server response: ${response.statusCode} ${response.statusMessage}`;
174+
if (response.statusCode != 200) {
175+
const msg = `Failed to download Benten server binary from ${package_url}. ${server_response}`;
176+
show_err_msg(msg);
177+
callback(null);
178+
} else {
179+
console.log(server_response);
180+
}
167181

168182
// The github zip contains only one file: benten-ls.tar.gz
169183
response.pipe(unzip.Parse())
170184
.on('entry', (entry) => {
171185
entry.pipe(gunzip()).pipe(tar.extract(sbgdir))
172186
.on('finish', () => {
173-
console.log("Extracted!");
187+
console.log("Extracted server binary!");
174188
callback(executable);
175189
})
176190
.on('error', (e) => {
177-
console.log(`Error extracting: ${e}`);
191+
const msg = `Error extracting Benten server binary: ${e}`;
192+
show_err_msg(msg);
193+
callback(null);
178194
});
179195
});
180196
});
@@ -187,7 +203,7 @@ export function activate(context: ExtensionContext) {
187203
// For the language server
188204
get_language_server((executable) => {
189205
if (executable === null) {
190-
console.error("Could not find or download language server.");
206+
show_err_msg("Did not find installed Benten server and could not download Benten server binary.");
191207
return;
192208
}
193209
const args = ["--debug"]

0 commit comments

Comments
 (0)