Pass server extraEnv to isValidExecutable

This commit is contained in:
Lukas Wirth 2023-08-12 07:10:20 +02:00
parent 1b678231d7
commit 33f9250d21
2 changed files with 7 additions and 3 deletions

View File

@ -20,7 +20,7 @@ export async function bootstrap(
log.info("Using server binary at", path); log.info("Using server binary at", path);
if (!isValidExecutable(path)) { if (!isValidExecutable(path, config.serverExtraEnv)) {
if (config.serverPath) { if (config.serverPath) {
throw new Error(`Failed to execute ${path} --version. \`config.server.path\` or \`config.serverPath\` has been set explicitly.\ throw new Error(`Failed to execute ${path} --version. \`config.server.path\` or \`config.serverPath\` has been set explicitly.\
Consider removing this config or making a valid server binary available at that path.`); Consider removing this config or making a valid server binary available at that path.`);

View File

@ -2,6 +2,7 @@ import * as vscode from "vscode";
import { strict as nativeAssert } from "assert"; import { strict as nativeAssert } from "assert";
import { exec, type ExecOptions, spawnSync } from "child_process"; import { exec, type ExecOptions, spawnSync } from "child_process";
import { inspect } from "util"; import { inspect } from "util";
import { Env } from "./client";
export function assert(condition: boolean, explanation: string): asserts condition { export function assert(condition: boolean, explanation: string): asserts condition {
try { try {
@ -93,10 +94,13 @@ export function isDocumentInWorkspace(document: RustDocument): boolean {
return false; return false;
} }
export function isValidExecutable(path: string): boolean { export function isValidExecutable(path: string, extraEnv: Env): boolean {
log.debug("Checking availability of a binary at", path); log.debug("Checking availability of a binary at", path);
const res = spawnSync(path, ["--version"], { encoding: "utf8" }); const res = spawnSync(path, ["--version"], {
encoding: "utf8",
env: { ...process.env, ...extraEnv },
});
const printOutput = res.error ? log.warn : log.info; const printOutput = res.error ? log.warn : log.info;
printOutput(path, "--version:", res); printOutput(path, "--version:", res);