1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Always override PATH when syncing from shell (#4132)

This commit is contained in:
Sebastian Malton 2021-11-12 08:50:57 -05:00 committed by GitHub
parent 3522485c6f
commit a71a6dcaff
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 21 deletions

View File

@ -22,10 +22,8 @@
import { shellEnv } from "./utils/shell-env";
import os from "os";
import { app } from "electron";
interface Env {
[key: string]: string;
}
import logger from "./logger";
import { isSnap } from "../common/vars";
/**
* shellSync loads what would have been the environment if this application was
@ -33,12 +31,7 @@ interface Env {
* useful on macos where this always needs to be done.
*/
export async function shellSync() {
const { shell } = os.userInfo();
let envVars = {};
envVars = await shellEnv(shell);
const env: Env = JSON.parse(JSON.stringify(envVars));
const env = await shellEnv(os.userInfo().shell);
if (!env.LANG) {
// the LANG env var expects an underscore instead of electron's dash
@ -47,9 +40,8 @@ export async function shellSync() {
env.LANG += ".UTF-8";
}
// Overwrite PATH on darwin
if (process.env.NODE_ENV === "production" && process.platform === "darwin") {
process.env["PATH"] = env.PATH;
if (!isSnap) {
process.env.PATH = env.PATH;
}
// The spread operator allows joining of objects. The precedence is last to first.
@ -57,4 +49,6 @@ export async function shellSync() {
...env,
...process.env,
};
logger.debug(`[SHELL-SYNC]: Synced shell env, and updating`, env, process.env);
}

View File

@ -22,9 +22,7 @@
import shellEnvironment from "shell-env";
import logger from "../logger";
export interface EnvironmentVariables {
readonly [key: string]: string;
}
export type EnvironmentVariables = Record<string, string>;
let shellSyncFailed = false;
@ -40,17 +38,15 @@ let shellSyncFailed = false;
* returned if the call fails.
*/
export async function shellEnv(shell?: string, forceRetry = false) : Promise<EnvironmentVariables> {
let envVars = {};
if (forceRetry) {
shellSyncFailed = false;
}
if (!shellSyncFailed) {
try {
envVars = await Promise.race([
return await Promise.race([
shellEnvironment(shell),
new Promise((_resolve, reject) => setTimeout(() => {
new Promise<EnvironmentVariables>((_resolve, reject) => setTimeout(() => {
reject(new Error("Resolving shell environment is taking very long. Please review your shell configuration."));
}, 30_000)),
]);
@ -62,5 +58,5 @@ export async function shellEnv(shell?: string, forceRetry = false) : Promise<Env
logger.error("shellSync(): Resolving shell environment took too long. Please review your shell configuration.");
}
return envVars;
return {};
}