From a6cd9d88465bb6a13bf93377d6d937f82db26709 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Tue, 4 Aug 2020 10:25:52 -0400 Subject: [PATCH] catch and log error from shell sync (#630) * catch and log error from shell sync Signed-off-by: Sebastian Malton Co-authored-by: Sebastian Malton --- src/main/index.ts | 3 +-- src/main/shell-sync.ts | 22 +++++++++++++++------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/main/index.ts b/src/main/index.ts index 0e94fb5226..a95ad61578 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -32,9 +32,8 @@ const vmURL = (isDevelopment) ? `http://localhost:${process.env.ELECTRON_WEBPACK protocol: "file", slashes: true, }) - async function main() { - shellSync(app.getLocale()) + await shellSync(); const updater = new AppUpdater() updater.start(); diff --git a/src/main/shell-sync.ts b/src/main/shell-sync.ts index afeccaa657..373d0a36ba 100644 --- a/src/main/shell-sync.ts +++ b/src/main/shell-sync.ts @@ -1,6 +1,7 @@ -import shellEnv = require("shell-env") -import logger from "./logger" -import * as os from "os"; +import shellEnv from "shell-env" +import os from "os"; +import { app } from "electron"; +import logger from "./logger"; interface Env { [key: string]: string; @@ -10,14 +11,21 @@ interface Env { * shellSync loads what would have been the environment if this application was * run from the command line, into the process.env object. This is especially * useful on macos where this always needs to be done. - * @param locale Should be electron's `app.getLocale()` */ -export function shellSync(locale: string) { +export async function shellSync() { const { shell } = os.userInfo(); - const env: Env = JSON.parse(JSON.stringify(shellEnv.sync(shell))) + + let envVars = {}; + try { + envVars = await shellEnv(shell); + } catch (error) { + logger.error(`shellEnv: ${error}`) + } + + const env: Env = JSON.parse(JSON.stringify(envVars)); if (!env.LANG) { // the LANG env var expects an underscore instead of electron's dash - env.LANG = `${locale.replace('-', '_')}.UTF-8`; + env.LANG = `${app.getLocale().replace('-', '_')}.UTF-8`; } else if (!env.LANG.endsWith(".UTF-8")) { env.LANG += ".UTF-8" }