aboutsummaryrefslogtreecommitdiff
path: root/editors/code
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2020-07-06 11:56:22 +0100
committerGitHub <[email protected]>2020-07-06 11:56:22 +0100
commita5ae50400dbab3f176a640570d336dae91d4e16e (patch)
tree276513ea550ae27a284321e3f35b2ff46f545f1d /editors/code
parenta0f24455ddc474ee288849b79aa1fc8ca7829385 (diff)
parentef223b9e6439c228e0be49861efd2067c0b22af4 (diff)
Merge #5234
5234: Fix: allow for binaries from $PATH to pass validity check r=matklad a=Veetaha Tackles https://github.com/rust-analyzer/rust-analyzer/pull/5229#issuecomment-654151387 cc @matklad @lnicola Apparently `fs.existsSync()` works only with real paths and not with `$PATH` env var Co-authored-by: Veetaha <[email protected]>
Diffstat (limited to 'editors/code')
-rw-r--r--editors/code/src/util.ts8
1 files changed, 2 insertions, 6 deletions
diff --git a/editors/code/src/util.ts b/editors/code/src/util.ts
index 78fe6f5da..970fedb37 100644
--- a/editors/code/src/util.ts
+++ b/editors/code/src/util.ts
@@ -1,5 +1,4 @@
1import * as lc from "vscode-languageclient"; 1import * as lc from "vscode-languageclient";
2import * as fs from "fs";
3import * as vscode from "vscode"; 2import * as vscode from "vscode";
4import { strict as nativeAssert } from "assert"; 3import { strict as nativeAssert } from "assert";
5import { spawnSync } from "child_process"; 4import { spawnSync } from "child_process";
@@ -114,15 +113,12 @@ export function isRustEditor(editor: vscode.TextEditor): editor is RustEditor {
114export function isValidExecutable(path: string): boolean { 113export function isValidExecutable(path: string): boolean {
115 log.debug("Checking availability of a binary at", path); 114 log.debug("Checking availability of a binary at", path);
116 115
117 if (!fs.existsSync(path)) return false;
118
119 const res = spawnSync(path, ["--version"], { encoding: 'utf8' }); 116 const res = spawnSync(path, ["--version"], { encoding: 'utf8' });
120 117
121 const isSuccess = res.status === 0; 118 const printOutput = res.error && (res.error as any).code !== 'ENOENT' ? log.warn : log.debug;
122 const printOutput = isSuccess ? log.debug : log.warn;
123 printOutput(path, "--version:", res); 119 printOutput(path, "--version:", res);
124 120
125 return isSuccess; 121 return res.status === 0;
126} 122}
127 123
128/** Sets ['when'](https://code.visualstudio.com/docs/getstarted/keybindings#_when-clause-contexts) clause contexts */ 124/** Sets ['when'](https://code.visualstudio.com/docs/getstarted/keybindings#_when-clause-contexts) clause contexts */